给main一个参数

Meh*_*hdi 1 java arguments

当我将args中的Class命名为main时,参数为:"myPackage.Algo.PersonneA".我有一个例外,我不知道为什么?

线程"main"中的异常java.lang.ClassNotFoundException:myPackage.Algo.PersonneA

这是我的主要内容:

 public static void main(String[] args) {
        Algo rf = (Algo) Class.forName(args[0]).newInstance();

    }
Run Code Online (Sandbox Code Playgroud)

这是一个我想要在主要的instanciate的类.

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ami*_*mit 5

两件事情:

(1)对于内部类,需要传递给forName()字符串:

"myPackage.Algo$PersonneA"
               ^
           instead of .
Run Code Online (Sandbox Code Playgroud)

内部类与封闭类分开,$而不是与..
因此,请将参数更改为main()上面的字符串,而不是您提供的字符串.

(2) PersonneA是子类ClassA而不是Algo- 所以在修复问题1后你仍然会得到一个ClassCastException,因为类型的对象PersonneA不是类型Algo