在java中访问对象变量

时间:2014-04-29 19:53:32

标签: java object arraylist map

如果我有

public class fakeclass{
int a;
int b; 
//getters and setters etc.
}

fakeclass abc = new fakeclass();
Map<String,List<Object>> tempObject= new HashMap<String,List<Object>>();
tempobject.put("blabla",abc); 

假设tempObject内的所有值都是实例类型fakeclass,我如何访问类的getter和setter?如果我进行迭代,它的类型为&#39; object&#39;并且不会显示getter和setter。 (除非我将地图类型更改为fakeclass)。

只是对这样做的选项感兴趣。

5 个答案:

答案 0 :(得分:2)

施展它:

((fakeclass)tempobject.get("blablabla").get(0)).getxxx()

请注意get(0),因为Map属于List s

答案 1 :(得分:2)

如果确定列表中的值来自假类,为什么不

Map<String,List<fakeclass>> tempObject= new HashMap<String,List<fakeclass>>();

答案 2 :(得分:0)

fakeclass abc = new fakeclass();
Map<String,List<fakeclass>> tempObject= new HashMap<String,List<fakeclass>>();
//don;t forget the List
List<fakeclass> list = new ArrayList<>();
list.add(abc);
tempobject.put("blabla",list); 

现在,当您从地图和该列表中的任何对象访问列表时,您可以将其用作类型&#39; fakeclass&#39;。

fakeclass retrieved = tempobject.get("blabla").get(0);
//use retreived as a fakeclass with all its setters and getter.

但是如果你必须保留Object类型的列表,那么你总是可以直接投射它。

Object retrieved = tempobject.get("blabla").get(0);
fakeclass retreivedFakeclass = (fakeclass) retrieved ;
//use retreivedFakeclass as a fakeclass with all its setters and getters.

答案 3 :(得分:0)

根据您调用put Map方法的方式,我认为您真正想要的是Map<String, Fakeclass>,而不是List内的Map 1}}。

public class Fakeclass{
    int a;
    int b; 
    //getters and setters etc.
}

Fakeclass abc = new Fakeclass();
Map<String, Fakeclass> tempObject= new HashMap<String, Fakeclass>();
tempObject.put("blabla", abc); 

然后您可以使用

访问Fakeclass的setter / getter
tempObject.get("blabla").getA();

答案 4 :(得分:0)

以下这些行不会编译。

fakeclass abc = new fakeclass();
Map<String,List<Object>> tempObject= new HashMap<String,List<Object>>();
tempobject.put("blabla",abc); 

您是否有兴趣存储List或fakeclass?

如果以下陈述为真

Making the assumption that all values inside the tempObject are of instance type fakeclass

你应该像这样使用

           fakeclass abc = new fakeclass();
        Map<String,fakeclass> tempObject= new HashMap<String,fakeclass>();
        tempObject.put("blabla",abc);
        tempObject.get("blabla").getA();

如果您的意图是字符串的FakeClass的商店列表,请使用以下

fakeclass abc = new fakeclass();
        Map<String,List<fakeclass>> tempObject= new HashMap<String,List<fakeclass>>();
        List<fakeclass> list = tempObject.get("blabla");
        if (list == null){
            list = new ArrayList<fakeclass>();
        }
        list.add(abc);
        tempObject.put("blabla",list);

如果您希望访问列表中第一个元素的getters方法,请使用此

tempObject.get("blabla").get(0).getA();