我想使用通用类型<T>,以便它接受任何类型的对象。下面是我的代码示例原始代码。class Address{///}class Person{///}class Details{Map<String,String> addressMap;Map<String,String> personMap;...//getters//setterspublic void updateAddress(String id, String case) { this.addressMap.put(id, case); }public void updatePerson(String id, String case) { this.personMap.put(id, case); }}我想修改类 Details using<T>以便它接受任何类型的对象。请让我知道最好的方法。我可以像下面这样引入新变量(allObjectMap),而不是对不同的对象(addressMap、personMap)使用单独的变量吗?下面的示例代码。class Details<T>{Map<T,String> allObjectMap;//getter & setter public Map<T, String> getAllObjectMap() { return allObjectMap;}public void setAllObjectMap(Map<T, String> allObjectMap) { this.allObjectMap = allObjectMap;}public void updateAddress(String id, String case) { // this.addressMap.put(id, case); this.allObjectMap.put((T)id, case); }public void updatePerson(String id, String case) { this.personMap.put(id, case); this.allObjectMap.put((T)id, case); }}请让我知道更好的方法。
1 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
您展示的样本在逻辑、语义和设计上都是不正确的。
您展示的课程甚至不相关,也不属于“常见”处理案例。
我使用了 2 个不同的类。
class Junior {
}
class Senior {
}
class Details<T> {
Map<T, String> allObjectMap;
public Map<T, String> getAllObjectMap() {
return allObjectMap;
}
public void setAllObjectMap(Map<T, String> allObjectMap) {
this.allObjectMap = allObjectMap;
}
}
在你的主要方法中,
HashMap<Junior, String> map1 = new HashMap<>();
HashMap<Senior, String> map2 = new HashMap<>();
Details<Junior> juniors = new Details<Junior>();
juniors.setAllObjectMap(map1);
Details<Senior> seniors = new Details<Senior>();
seniors.setAllObjectMap(map2);
如您所见,这样做是完全有可能的。
添加回答
举报
0/150
提交
取消