`
芝加哥09
  • 浏览: 60566 次
社区版块
存档分类
最新评论

用反射机制调用类的main方法

    博客分类:
  • Java
 
阅读更多

运用反射机制来调用类的main方法,在一些框架当中经常用到。我们只需要将一个类的全名(即要包括包名)配置到配置文件当中。

我们知道main方法的参数是一个String类型的数组,那么在反射当中应该要注意这个地方。代码中有详解。

 

MainClass.java

package com.cloud.reflect;

public class MainClass {
	public static void main(String[] args) {
		for (String arg : args) {
			System.out.println(arg);
		}
	}
}

 

MainTest.java

package com.cloud.reflect;

import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

public class MainTest {
	public static void main(String[] args) throws Exception {
		//用类加载器加载配置文件
		InputStream in = MainTest.class.getResourceAsStream("config.properties");
		Properties props = new Properties();
		props.load(in);
		//关闭IO流
		in.close();
		String className = props.getProperty("className");
		
		Method mainMethod = Class.forName(className).getMethod("main", String[].class);
		//由于main方法是静态方法,所以第一个参数为null, 由于main方法只接收一个字符串数组的参数,
		//如果你的第二参数是new String[]{"chris", "cloud"}这种形式的话,会报错的。因为
		//JDK会认为你传了两个String类型的参数,为此解决方案有两种,推荐用第一种。
		
		//第一种方案:
		mainMethod.invoke(null, (Object) new String[]{"chris", "cloud"});
		//第二种方案:
		mainMethod.invoke(null, new Object[]{new String[]{"chris", "cloud"}});
	}
}

 

config.properties

className=com.cloud.reflect.MainClass

 

分享到:
评论

相关推荐

    反射,动态加载指定类调用类中的方法

    反射机制使得我们能够在运行时动态地获取类的信息,并且能够创建对象、调用方法、访问字段,甚至改变类的行为。在Java中,`java.lang.reflect`包提供了对反射的支持。 在“反射,动态加载指定类调用类中的方法”这...

    详解Golang利用反射reflect动态调用方法

    Go 语言中的反射机制使得程序能够在运行时获取变量的类型信息,以及根据这些信息来动态地创建对象、调用方法等。 **1. 接口(interface)类型与反射** Go 语言中的接口类型是反射的核心概念之一。一个接口类型包含两...

    反射机制和类加载机制学习总结

    反射机制和类加载机制是Java编程语言中的两个重要概念。反射提供了强大的运行时元数据操作能力,而类加载机制则确保了类的安全加载和动态管理。深入理解这两个机制对于Java开发者来说至关重要,尤其对于那些从事框架...

    利用java反射机制调用类的私有方法(推荐)

    下面我们将详细讨论如何利用Java反射机制来调用类的私有方法。 首先,我们需要导入相关的Java反射包,包括`java.lang.reflect.Method`和`java.lang.reflect.InvocationTargetException`。接下来,我们创建一个名为`...

    java 反射机制详解

    Java 反射机制是 Java 语言中的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用对象的方法,甚至修改对象的状态。这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在...

    Java反射机制

    - **框架开发**:许多框架(如Spring、Hibernate)都大量使用反射机制来实现其功能。 - **代码解析**:在开发IDE时,可以通过反射来获取类的信息进行代码提示和分析。 #### 四、Class对象 `Class`对象是反射的核心...

    Qt 使用QMetaObject实现反射机制代码demo

    在编程领域,反射机制是一种强大的特性,允许程序在运行时检查自身的行为,包括类的信息、对象的状态以及函数的调用等。在C++的世界里,Qt框架提供了一种实现反射的手段,即QMetaObject系统。这个系统允许我们动态地...

    java面试题--反射机制

    `Class`类在Java反射机制中扮演着核心角色,它是所有Java类的运行时表示。`Class`对象可以由以下几种方式获取: 1. **通过类的`Class`属性获取**:如`String.class`。 2. **通过对象的`getClass()`方法获取**:如`...

    Java中类的反射机制

    在Java中,反射机制主要通过java.lang.Class类和相关的类库来实现,它使得我们能够在运行时动态地获取类的信息(如类名、属性、方法等)并能创建和调用对象。 1. **类的加载与Class对象** 当Java虚拟机(JVM)加载一...

    java反射机制详解

    通过 Java 反射机制,开发者可以在运行时判断任意一个对象所属的类、构造任意一个类的对象、判断任意一个类所具有的成员变量和方法、调用任意一个对象的方法,并生成动态代理。 Java 反射机制主要提供了以下功能: ...

    Java反射机制 Java反射机制

    Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用类的方法等。通过反射,程序可以动态地创建对象和调用其方法,从而实现更灵活的功能。 #### 二、Java反射机制的由来与发展 Java反射机制...

    Java 反射机制 代码的实例

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...

    JAVA反射机制与类的加载

    Java反射机制使得程序在运行时能够动态加载、解析和使用未知类型的类。这为开发者提供了强大的灵活性,比如在设计和运行时添加新类,或者动态查询和操作类的能力。通过反射,我们可以: 1. 加载运行时才能确定的...

    Java中的反射机制

    Java中的反射机制为开发者提供了一种强大而灵活的方式来处理类信息。通过反射,可以实现诸如动态代理、框架开发等高级功能,同时也可以用于构建高度可扩展和可维护的软件系统。然而,需要注意的是,反射操作可能会...

    Java反射机制总结

    ### Java反射机制总结 ...总之,Java反射机制是Java语言的一个重要特性,它提供了在运行时动态获取类信息和操作类结构的能力。合理使用反射可以提高程序的灵活性和扩展性,但在使用时也需要考虑到其潜在的问题和限制。

    Java 反射机制浅析

    首先,Java反射机制允许我们在运行时获取类的元数据,包括类的名称、属性(字段)和方法。例如,通过`Class.forName()`方法,我们可以根据类名动态加载类。一旦获取到`Class`对象,我们就可以进一步获取该类的所有...

    java的反射机制及其实际应用

    反射机制可以用来创建动态代理类,这对于AOP(面向切面编程)非常有用。动态代理允许你在不修改原有代码的情况下增强功能,例如添加日志记录或事务管理。 ##### 3.2 序列化与反序列化 反射可以用于序列化和反序列...

    C#私有成员反射调用类库

    C#的反射机制提供了一种强大的工具,使我们能够在运行时动态地操作代码。尽管可以利用反射访问私有成员,但这应被视为一种特殊情况下的权宜之计,而不是常规编程实践。在单元测试中,适度使用反射可以帮助验证私有...

Global site tag (gtag.js) - Google Analytics