为了账号安全,请及时绑定邮箱和手机立即绑定

想使用泛型类型 <T>

想使用泛型类型 <T>

富国沪深 2023-01-05 17:10:17
我想使用通用类型<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);

如您所见,这样做是完全有可能的。


查看完整回答
反对 回复 2023-01-05
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信