如何访问数组中作为对象的类的get和set方法?
例如:
Dog.cs
Class Dog{
int id;
string name;
public void setid(int newid){
id=newid;
}
public void setname(string newname){
name=newname;
}
public int getid() { return id; }
public string getname() { return name; }}
main.cs
main(){
public LinkedList<Object> dogs = new LinkedList<Object>();
public void onCreate(){
Dog newDog = new Dog();
newDog.setid((int) 1);
newDog.setname((string) "Doggy");
dogs.add(newDog);
}
public void LoadEvent(){
// I want to get the dog's values like this
string itsname = dogs.get(0).getname();
}}
我想访问我在dog.class中编写的get和set方法,但我无法访问它们,因为我把类放在一个数组中作为对象。请告诉我如何做到这一点,还是有其他方法可以做到这一点。
请帮帮我
非常感谢!
答案 0 :(得分:1)
两个选项:
1(错误):在访问其成员之前,强制转换Object
为所需类型:
String name = ((Dog)dogs.get(0)).getName();
2(更好的一个):按Dog
参数化您的列表,因此可以在不进行投射的情况下操作实例:
List<Dog> dogs = new LinkedList<>(); // by <Dog> we say, that list will contain `Dog` instances
// ...
String name = dogs.get(0).getName();
此外,为什么LinkedList
?它非常适合堆栈和队列,而不是随机访问列表。我认为ArrayList
在你的情况下会好得多。
答案 1 :(得分:0)
如果您确信数组中的所有对象都是Dogs,那么当您去访问该属性时将其强制转换:
String itsname = ((Dog)dogs.get(0)).getName();
如果您不自信,请检查:
String itsName = null;
if (dogs.get(0) instanceof Dog.class) {
itsName = (Dog)dogs.get(0).getName();
}
否则,我建议事先声明对象充满了狗,所以你不必处理这个问题:
public LinkedList<Dog> dogs = new LinkedList<Dog>();