当我将args中的Class命名为main时,参数为:"myPackage.Algo.PersonneA".我有一个例外,我不知道为什么?
线程"main"中的异常java.lang.ClassNotFoundException:myPackage.Algo.PersonneA
这是我的主要内容:
Run Code Online (Sandbox Code Playgroud)public static void main(String[] args) { Algo rf = (Algo) Class.forName(args[0]).newInstance(); }
这是一个我想要在主要的instanciate的类.
Run Code Online (Sandbox Code Playgroud)package myPackage; public class Algo { public static class PersonneA extends ClassA { public Algorithm create(int r) { return new AlgorithmDist(new DistributedDocument(), r); } } public static class PersonneB extends ClassA { public Algorithm create(int r) { return new AlgorithmSimul(new SimulationDocument(), r); } } }
两件事情:
(1)对于内部类,需要传递给forName()字符串:
"myPackage.Algo$PersonneA"
^
instead of .
Run Code Online (Sandbox Code Playgroud)
内部类与封闭类分开,$而不是与..
因此,请将参数更改为main()上面的字符串,而不是您提供的字符串.
(2) PersonneA是子类ClassA而不是Algo- 所以在修复问题1后你仍然会得到一个ClassCastException,因为类型的对象PersonneA不是类型Algo
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |