假设我们创建listOfObjects
类型ArrayList
,其中包含Object
类型的对象:
public static ArrayList listOfObjects = new ArrayList();
我们有一个Object
构造函数,它会创建一个Object
,其中包含两个字段,名称和类型:
public Object(String name, int type) { /*some code*/ }
现在我们创建两个Object
,然后将它们添加到listOfObjects
:
public static Object object1 = new Object("object one", 1);
public static Object object2 = new Object("object two", 2);
listOfObjects.add(object1);
listOfObjects.add(object2);
假设object1
和object2
已正确添加到listOfObjects
,我们如何访问列表中对象的type
字段?
我试过了
listOfObjects.get(1).type;
但这似乎不起作用。有没有办法做到这一点?
编辑 Object
是一个示例名称。
答案 0 :(得分:4)
Object
的类是一个非常糟糕的主意,因为已经有一个名为java.lang.Object
的类,因为它在java.lang
包中,你的所有来源都隐含地导入它。public int type;
,如果您想以您发布的方式访问它。public int getType() { return type; }
答案 1 :(得分:1)
构造函数public Object(String name, int type)
应该将参数分配给公共对象变量。例如:
public class MyObject {
public String name;
public int type;
public MyObject(String name, int type) {
this.name = name;
this.type = type;
}
}
然后调用listOfObjects.get(1).type;
即可。
修改:将课程从Object
重命名为MyObject
。
答案 2 :(得分:1)
你的Object类应该是,
public class Object {
private String name;
private int type;
public Object(String name, int type) {
this.name = name;
this.type = type;
}
public int getType(){
return type;
}
}
然后您可以listOfObjects.get(1).getType();
答案 3 :(得分:0)
您需要使用Object.getClass()
。
答案 4 :(得分:0)
首先,使用其他名称作为类名而不是Object
。虽然你可以使用它,但它只会增加讨论的混乱。 (提示:这就是为什么使用诸如foo和bar之类的metasyntactic变量的原因)。
其次,你说“它不起作用”。以什么方式?程序是否编译?它运行吗?你有错误信息吗?
最后,阅读Java Generics,他们现在已经16岁了。如果你是一名学生,并且你没有普通教学,那么就教育你的教授(或者你被扯掉了)。
最后,重写这一行:
public static ArrayList<Object> listOfObjects = new ArrayList<>();
答案 5 :(得分:0)
首先将您的班级名称改为除Object
之外的其他名称,然后在此班级中声明两个字段name
和type
,您将在其中存储您已通过的值在你的构造函数中,你的代码应该是这样的:
public class TestObject {
//The best approach is to declare your fields here as private
private String name;
private int type;
//default non parameterized constructor
public TestObject() {
super();
}
public TestObject(String name, int type) {
this.name = name;
this.type = type;
}
//getters and setters of your fields to make them accessible in public
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public int getType(){
return this.type;
}
public void setType(int type){
this.type = type;
}
要从列表中获取对象type
,您的通话应该是这样的:
//use getType() getter to get the type field value
listOfObjects.get(1).getType();