从数组设置类属性

时间:2016-03-19 17:24:56

标签: java android arrays android-studio linked-list

如何访问数组中作为对象的类的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方法,但我无法访问它们,因为我把类放在一个数组中作为对象。请告诉我如何做到这一点,还是有其他方法可以做到这一点。

请帮帮我

非常感谢!

2 个答案:

答案 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>();