Я не слишком уверен, как это сказать, поэтому имеет смысл, но я постараюсь изо всех сил.Как использовать объект, не зная имя объекта
Скажем, у меня есть 2 класса. Мой основной класс и класс Person
.
Мой главный класс будет создавать некоторые объекты из Person
класса как этот
public class Example {
static Person bob = new Person(23);//Age
static Person fred = new Person(34);
static Person John = new Person(28);
//..and so on
public static void main(String args[]){
..
}
}
и в моем классе Person
..
public class Person{
private int age;
public Person(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
}
Теперь, если бы я хотел возраста Фреда, я d просто позвоните Fred.getAge();
. Но, в моей программе, я не знаю, какого человека я получаю. Он случайным образом выбирает один, и мне нужно получить имя без прямого вызова объекта. Например, я бы что-то подобное в моем классе Person:
public static Object getPerson(){
//Some code to get a random integer value and store it it Var
switch(Var){
case 1:
return bob;
case 2:
return fred;
case 3:
return john;
}
}
То, что я бы ожидать, что это нужно сделать, это вернуть объект, который я мог бы использовать так:
public static void main(String args[]){
System.out.println(Person.getPerson().getAge());
}
То, что я думал это было бы первым вызовом getPerson()
, который случайным образом возвращает bob
, fred
, или john
, а затем он будет звонить getAge()
. Так что, если getPerson()
вернулся fred
, то это было бы то же самое, как делают fred.getAge();
Теперь это не работает, и это был единственный способ, которым я думал, что имеет смысл для меня.
Как это сделать, чтобы он действительно делал то, что я хочу?
Я очень новичок в Java и OOP, и это мой первый опыт работы с разными объектами. Так что извините, если я использую неправильные условия и объясняю вещи странно.
«Теперь это не работает, и это был единственный способ, которым я думал, что это имело смысл для меня». - Что именно означает «не работает» здесь? Имеет ли какое-либо исключение? – Smutje
как вы случайно получаете человека? –
Пожалуйста, объясните, что вы пытаетесь выполнить. Обычно у вас будет запрос, в котором говорится: «Получите возраст fred», таким образом, вы будете перебирать массив «Person» и находить «Fred» и печатать возраст (таким образом, вам нужно иметь объект getName()). Или вы может просто создать массив «Личности» и перебрать их и напечатать их возрасты. –