1

Is it possible to compose new class at runtime in Java?

What are the means for that? Refection? Compiler API?

I can do

package tests;

public class TryReflection02 {

    interface A {

    }

    public static void main(String[] args) {

        Object o = new A() {};

        System.out.println( o.toString() );

        o = A.class.newInstance() // exception

    }

}

Can I do the same having A.class value?

4

1 回答 1

2

不,你不能。A是一个接口,只有类可以被实例化。

可以做的是使用一个库/助手,它使用一些技巧来创建一个实现接口并实例化的。JDK 的Proxy类包含执行此操作的静态方法。还有一些工具可以做到这一点,这些工具是为与测试相关的用例定制的:例如mockito

这些工具完全按照您在这个问题的标题中所暗示的那样做:它们不是实例化接口,而是生成一个实现接口的新类,然后实例化该类。

于 2014-03-06T20:15:51.103 回答