Приведите аргументы к главному

java arguments

162 просмотра

2 ответа

47 Репутация автора

Когда я даю имя 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();

    }

и это класс, который я хочу создать в основном.

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);
        }
    }
}
Автор: Mehdi Источник Размещён: 23.03.2012 10:18

Ответы (2)


1 плюс

3966 Репутация автора

ваш главный должен выглядеть так:

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

    }

Вы писали: static public void main(String[] args)что неверный синтаксис :)

Автор: John Snow Размещён: 23.03.2012 10:21

5 плюса

141876 Репутация автора

Две вещи:

(1) для внутреннего класса, вам нужно перейти к forName()строке:

"myPackage.Algo$PersonneA"
               ^
           instead of .

Внутренний класс отделен от окружающего класса с помощью $а, а не с ..
Поэтому измените аргумент на main()приведенную выше строку вместо той, которую вы указали.

(2) PersonneAявляется подклассом, ClassAа не из Algo- поэтому после исправления проблемы 1 вы все равно получите ClassCastException, поскольку объект типа PersonneAне относится к типуAlgo

Автор: amit Размещён: 23.03.2012 10:31
Вопросы из категории :
32x32