如果我有
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)。
只是对这样做的选项感兴趣。
答案 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();