如何利用java反射构造一个类,使之实现一个接口和一些功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用java反射构造一个类,使之实现一个接口和一些功能相关的知识,希望对你有一定的参考价值。

由于做工具包需要泛化,现需要通过java的反射API实现题述要求,详述如下:
已知类A和接口C
public class A
public void func()


public interface C
public void exe();


现需要通过反射机制生成如下所示的类B
public class B implements C
private A a;

public void exe()
a.func();



其中,B中的属性A是从配置文件中读取的,也就是说,B中的属性还可能是除了A外的其他类的实例,并且在exe中调用的A方法也是在配置文件中指明的。

想问达人们,这种要求能够实现吗?要是现有java反射机制不行的话,有没有什么工具可以实现?

参考技术A 可以实现,很方便。我去找个例子贴给你

Class daoFactoryClass = Class.forName(daoName);
//daoName是DAOFactory实现类的名字

// types of the constructor arguments
Class[] constrArgs = Properties.class;

Object[] args = daoProps;
//daoProps是Properties类型,它的内容来自一个配置文件
// get Constructor of this class with matching parameter types
Constructor<IDAOFactory> constructor = daoFactoryClass.getConstructor(constrArgs);

this.factory = constructor.newInstance(args);本回答被提问者采纳

java反射

 什么是类的返射?

        通过类说明可以得到类的父类、实现的接口、内部类、构造函数、方法、属性并可以根据构造器实例化一个对象,唤起一个方法,取属性值,改属性值。如何得到一个类说明:

                        Class cls=类.class;

                        Class cls=对象.getClass();

                        Class.forName("类路径");

       如何得到一个方法并唤起它?

                        Class cls=类.class;

                        Constructor cons=cls.getConstructor(new Class[]{String.class});

                        Object obj=cons.newInstance(new Object[]{"aaa"});

                        Method method=cls.getMethod("方法名",new Class[]{String.class,Integer.class});

                        method.invoke(obj,new Object[]{"aa",new Integer(1)}); 

    或者

        Object obj=cls.newInstance();

以上是关于如何利用java反射构造一个类,使之实现一个接口和一些功能的主要内容,如果未能解决你的问题,请参考以下文章

Java利用反射排序

如何把一个接口的所有实现类反射出来?

Java学习总结(十四)——java反射机制,利用反射动态创建对象

如何利用java的反射机制动态创建对象

java中的反射机制浅析

利用反射——查看类的声明