Java 从数组设置类属性
如何访问数组中作为对象的类的get和set方法 例: 狗狗Java 从数组设置类属性,java,android,arrays,android-studio,linked-list,Java,Android,Arrays,Android Studio,Linked List,如何访问数组中作为对象的类的get和set方法 例: 狗狗 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.
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();
}}
main(){
public LinkedList dogs=new LinkedList();
public void onCreate(){
新狗=新狗();
newDog.setid((int)1);
setname((字符串)“Doggy”);
添加(newDog);
}
公共void LoadEvent(){
//我想得到这样的狗的价值观
string itsname=dogs.get(0.getname();
}}
我想访问我在dog.class中编写的get和set方法,但我无法访问这些方法,因为我将该类作为对象放在数组中。请告诉我如何做到这一点,或者有没有其他方法来做到这一点
请帮帮我
非常感谢 如果您确信阵列中的所有对象都是狗,则在访问属性时将其投射:
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>();
public LinkedList dogs=new LinkedList();
两个选项:
1(错误):cast在访问其成员之前将对象
返回到所需类型:
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();
List dogs=new LinkedList();//我们说,该列表将包含“Dog”实例
// ...
字符串名称=dogs.get(0.getName();
此外,为什么
LinkedList
?它非常适合堆栈和队列,而不是随机访问列表。我想ArrayList
在你的情况下会更好。请把你的评论作为答案,这样我也可以标记它,你能给我更多关于参数化类的细节吗。非常感谢。非常感谢,我使用了坏的一个,因为我的android studio中存在一些bug,在列表中添加一个类会使所有元素的值相同。