我想使用通用类型<T>
,以便它接受任何类型的对象。
下面是我的代码示例原始代码。
class Address{
///
}
class Person{
///
}
class Details
{
Map<String,String> addressMap;
Map<String,String> personMap;
...
//getters
//setters
public void updateAddress(String id, String case) {
this.addressMap.put(id, case);
}
public void updatePerson(String id, String case) {
this.personMap.put(id, case);
}
}
我想使用<T>
修改类Details,以便它接受任何类型的对象。
请让我知道最好的方法。
我可以如下介绍新变量(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);
}
}
请让我知道更好的方法。
答案 0 :(得分:0)
您显示的示例在逻辑,语义和设计上都是错误的。
您显示的类甚至都不相关,也不属于“常见”处理情况。
我使用了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);
如您所见,这样做是完全可能的。