可以通过 Class.forName("...").newInstance(); 来获得一个类的实例
只要传入类的名字就可以产生实例
有没有什么方法通过传入 方法名字 来执行某个方法 ?
只要传入类的名字就可以产生实例
有没有什么方法通过传入 方法名字 来执行某个方法 ?
解决方案 »
- (业务逻辑接口) (对象名) = new (实现业务逻辑的类)();
- 发布腾讯设计大赛题.欢迎大家前来看看.
- 我们为什么学JAVA?
- 如何取defaulttablemodel一行的数据
- 请高手指教!急急急!怎样才能在java中调用存储过程,我的为什么不行啊
- 二叉树后序遍历如何实现?我这里有部分代码,能给我改一下么?
- JBuilder与sql server 2000联接错误的问题!!!
- 关于JAVA用户界面贴图的问题
- [求助]如何理解“java利用接口实现了多重继承的优点,并去除了多重继承的缺点”这句话?
- 初学,都不知道该在哪里提问。用JAVA做串口编程改怎么做?
- 大家看看这段代码的输出是什么,为什么???
- list中存放了一系列hh:mm,如何判断顺序正确?
public Method getDeclaredMethod(String name,
Class... parameterTypes)
throws NoSuchMethodException,
SecurityException返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。name 参数是一个 String,它指定所需方法的简称,parameterTypes 参数是 Class 对象的一个数组,它按声明顺序标识该方法的形式参数类型。如果在某个类中声明了带有相同参数类型的多个方法,并且其中有一个方法的返回类型比其他方法的返回类型都特殊,则返回该方法;否则将从中任选一个方法。如果名称是 "<init>” 或 “<clinit>",则引发一个 NoSuchMethodException。方法或者
public Method getMethod(String name,
Class... parameterTypes)
throws NoSuchMethodException,
SecurityException返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。name 参数是一个 String,用于指定所需方法的简称。parameterTypes 参数是按声明顺序标识该方法形式参数类型的 Class 对象的一个数组。如果 parameterTypes 为 null,则按空数组处理。
来获得你指定的Method对象,然后通过Method类的
public Object invoke(Object obj,
Object... args)
throws IllegalAccessException,
IllegalArgumentException,
InvocationTargetException对带有指定参数的指定对象调用由此 Method 对象表示的基础方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。
如果基础方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null。 如果基础方法所需的形参数为 0,则所提供的 args 数组长度可以为 0 或 null。 如果基础方法是实例方法,则使用动态方法查找来调用它,这一点记录在 Java Language Specification, Second Edition 的第 15.12.4.4 节中;在发生基于目标对象的运行时类型的重写时更应该这样做。 如果基础方法是静态的,并且尚未初始化声明此方法的类,则会将其初始化。 如果方法正常完成,则将该方法返回的值返回给调用方;如果该值为基本类型,则首先适当地将其包装在对象中。但是,如果该值的类型为一组基本类型,则数组元素不 被包装在对象中;换句话说,将返回基本类型的数组。如果基础方法返回类型为 void,则该调用返回 null。 方法来执行这个Method。详细的使用方法参考sun的API文档