使用Java反射创建静态抽象类的实例?

时间:2012-07-07 21:02:44

标签: java reflection

我有这个:

public interface Receiver extends x.y.a
{
    public static abstract class Stub extends x.y.b implements Receiver
    {
        public Stub()
        {
        }
    }
}

想写这个:

private final Receiver receiver = new Receiver.Stub()
{
};

使用反射。这甚至可能吗?我可以找到Stub()构造函数,但当然它无法自行执行。

3 个答案:

答案 0 :(得分:2)

不,这是不可能的,如果您尝试通过反射实例化抽象类,您将获得异常。无论如何总是记得你无法实例化抽象类。虽然你可以创建匿名类。

答案 1 :(得分:1)

据我所知,你无法创建抽象类的实例。即使有反思。如果那个类不是抽象的,你可以简单地调用

Constructor c = Receiver.Stub.class.getConstructor(null);
Receiver r= (Receiver)c.newInstance(null);

答案 2 :(得分:1)

您的代码无需反射即可运行。您正在创建一个匿名子类。 AFAIK使用反射创建子类(匿名)是不可能的。也许这个帖子提供了丰富的信息:

In Java is it possible to dynamically create anonymous subclass instance given only instance of parent class?

或者:Is it possible to create an anonymous class while using reflection?