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

想使用泛型类型 <T>

想使用泛型类型 <T>

富国沪深 2023-01-05 17:10:17

我想使用通用类型<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);

    }

}

我想修改类 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贡献1609条经验 获得超2个赞

您展示的样本在逻辑、语义和设计上都是不正确的。


您展示的课程甚至不相关,也不属于“常见”处理案例。


我使用了 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

添加回答

举报

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