gpt4 book ai didi

java - 想要使用泛型类型

转载 作者:行者123 更新时间:2023-12-02 04:45:50 25 4
gpt4 key购买 nike

我想使用泛型类型<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> 修改类详细信息这样它就可以接受任何类型的物体。请让我知道最好的方法。

我可以如下引入新变量(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);
}
}

请让我知道更好的方法。

最佳答案

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

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

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

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

关于java - 想要使用泛型类型 <T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56483455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com