【问题标题】:setting class properties from array从数组设置类属性
【发布时间】:2016-07-06 09:53:31
【问题描述】:

如何将数组中的类作为对象访问 get 和 set 方法?

例如:

狗.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 方法,但我无法访问这些方法,因为我将类作为对象放在数组中。请告诉我如何做到这一点,或者有没有其他方法可以做到这一点。

请帮帮我

非常感谢!

【问题讨论】:

  • 请将您的评论作为答案,以便我也可以标记它,您能否给我更多关于参数化课程的详细信息。谢谢!

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


【解决方案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 在你的情况下会好得多。

【讨论】:

  • 非常感谢,我使用了 Bad 的,因为我的 android studio 中存在一些错误,在列表中添加一个类会使所有元素的值相同。
【解决方案2】:

如果您确信数组中的所有对象都是 Dogs,则在您访问该属性时对其进行强制转换:

String itsname = ((Dog)dogs.get(0)).getName();

如果你不自信,那就去看看吧:

String itsName = null;
if (dogs.get(0) instanceof Dog.class) {
  itsName = (Dog)dogs.get(0).getName();
}

否则,我建议您事先断言该对象充满了 Dogs,这样您就不必处理这个:

public LinkedList<Dog> dogs = new LinkedList<Dog>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    相关资源
    最近更新 更多