小编Kru*_*ese的帖子

在运行时生成新的类实例失败

我遇到了java和泛型类的问题.
给出以下代码

public class A {
    public void n() { 
        System.out.println("In A"); 
    }
}

public class B extends A {
    @Override
    public void n() {
        System.out.println("In B");
        super.n();
    }
}

public class C {
    public A m_a;
    public <T extends A> C( Class<T> a ) {
        try {
            m_a = a.newInstance();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    public void print(){ m_a.n(); };
}
Run Code Online (Sandbox Code Playgroud)

我尝试实例化C类的对象,如下所示

C c = new C( B.class );
Run Code Online (Sandbox Code Playgroud)

但是得到以下错误:

java.lang.InstantiationException: testdbvsfile.Main$B
    at java.lang.Class.newInstance(Unknown Source)
    at testdbvsfile.Main$C.<init>(Main.java:63) …
Run Code Online (Sandbox Code Playgroud)

java generics

1
推荐指数
1
解决办法
61
查看次数

标签 统计

generics ×1

java ×1