Джава. Содержимое строки для создания экземпляра объекта - PullRequest
2 голосов
/ 21 января 2011

Я знаю, что это часть java.lang.reflect. *, но я не смог найти ни одного предложения, чтобы указать мне, как справиться с этим.

Я хочу использовать содержимое строки для создания и экземпляр объекта, имя которого хранит строка.

Например.
String[] carName = {"volvo","vw","bmw"};
car carName[0];
car carName[1];
car carName[2];

Я наткнулся на этот фрагмент, который выглядит многообещающе:
Car car = (Car) Class.forName("Volvo").newInstance();
Откидывает назад: Unhandled exception type ClassNotFoundException

edit: Извините, что не достаточно ясно, я ни в коем случае не профессионал. Нет, у меня нет класса под названием Volvo. Я на самом деле пытаюсь определить один универсальный класс (автомобиль), а затем инициализировать его экземпляры через строки.

Ответы [ 3 ]

4 голосов
/ 21 января 2011
  1. Вам нужно либо catch ClassNotFoundException, либо объявить, что он будет выброшен из вашего метода

  2. Вам необходимо указать полное имя вашего класса. Если класс упакован как foo.cars.Volvo, используйте его в качестве имени.

3 голосов
/ 21 января 2011

Похоже, что класс, на который вы ссылаетесь, отсутствует в пути к классам.Убедитесь, что вы указали полный пакет, например

com.example.Volvo 

при использовании Class.forName().

0 голосов
/ 21 января 2011

Есть ли у вас класс с именем Volvo, который расширяет Car?

Class.forName требует полностью определенного имени класса, так что это может быть org.example.Volvo или как вы его называли.

Или вы пытаетесь создать новый автомобильный объект со значением carName?

Редактировать:

Тогда вы ищетевероятно, больше похоже на (я не пытался скомпилировать это, так что ...)

string[] names = { "Volvo", "BMW", "Volkswagen" };
List<Car> cars = new ArrayList<Car>();

for(string name : cars)
{
    // presuming you have a class Car with a constructor that takes a string
    cars.Add(new Car(name));
}

если вы уже знаете, что у вас есть класс с именем car, вам не нужно возиться с любым отражениемматериал для его создания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...