Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在运行时生成类的新实例失败_Java_Generics - Fatal编程技术网

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

Java 在运行时生成类的新实例失败,java,generics,Java,Generics,我对java和泛型类有问题。 给定以下代码 公共A类{ 公共无效n(){ System.out.println(“In A”); } } 公共类B扩展了A{ @凌驾 公共图书馆{ System.out.println(“In B”); super.n(); } } 公共C类{ 公共并购; 公共C类(甲级){ 试一试{ m_a=a.newInstance(); } 捕获(例外e){ e、 printStackTrace(); } } public void print(){m_a.n();}; }

我对java和泛型类有问题。
给定以下代码

公共A类{
公共无效n(){
System.out.println(“In A”);
}
}
公共类B扩展了A{
@凌驾
公共图书馆{
System.out.println(“In B”);
super.n();
}
}
公共C类{
公共并购;
公共C类(甲级){
试一试{
m_a=a.newInstance();
}
捕获(例外e){
e、 printStackTrace();
}
}
public void print(){m_a.n();};
}
我尝试实例化一个C类的对象,如下所示

C c = new C( B.class );
但是得到以下错误:

java.lang.InstantiationException: testdbvsfile.Main$B
    at java.lang.Class.newInstance(Unknown Source)
    at testdbvsfile.Main$C.<init>(Main.java:63)
    at testdbvsfile.Main.main(Main.java:76)
Caused by: java.lang.NoSuchMethodException: testdbvsfile.Main$B.<init>()
    at java.lang.Class.getConstructor0(Unknown Source)<br>
    ... 3 more
java.lang.实例化异常:testdbvsfile.Main$B
位于java.lang.Class.newInstance(未知源)
位于testdbvsfile.Main$C(Main.java:63)
位于testdbvsfile.Main.Main(Main.java:76)
原因:java.lang.NoSuchMethodException:testdbvsfile.Main$B.()
位于java.lang.Class.getConstructor0(未知源)
... 3个以上
我怎样才能让它工作?
谢谢你的帮助。


顺便说一句:我使用的是jre1.8.0_65,问题是您使用的是非静态内部类。从堆栈跟踪中可以明显看出这一点,其中
Main$B
用于
B
类的名称,该类在声明中缺少
static

非静态成员类的构造函数采用隐式参数及其封闭类的实例


将内部类设置为静态将解决此问题。您还可以通过将
A
B
C
类移出
Main
类来解决此问题。

问题在于您使用的是非静态内部类。从堆栈跟踪中可以明显看出这一点,其中
Main$B
用于
B
类的名称,该类在声明中缺少
static

非静态成员类的构造函数采用隐式参数及其封闭类的实例


将内部类设置为静态将解决此问题。您还可以通过将
A
B
C
类移出
Main
类来解决此问题。

好地方!我已经看了五分钟了。谢谢你的回答。。。我没想到:好地方!我已经看了五分钟了。谢谢你的回答。。。我没有想到:提供MCVE的重要性。因此,提供MCVE的重要性。