gpt4 book ai didi

java - 不同泛型类的一个接口(interface)

转载 作者:行者123 更新时间:2023-12-01 17:15:19 25 4
gpt4 key购买 nike

我在 Java 中的泛型方面遇到了一些麻烦,因为我不确定我想要实现的目标是否确实存在。

我编写了以下类(此处进行了简化,没有 getter/setter):

public class Pair<T>{
public T firstEntry;
public T secondEntry;

public Pair(T p_First, T p_Second) {
this.m_First = p_First;
this.m_Second = p_Second;
}
}

现在我实际上想要同一个类,但 firstEntry 和 secondaryEntry 可能是不同的类型。例如像这样的一些类:

public class PairMultipleType<T, K>{
public T firstEntry;
public K secondEntry;

public Pair(T p_First, K p_Second) {
this.m_First = p_First;
this.m_Second = p_Second;
}
}

但我想使用这样的类:

Pair<Integer> myPair = new Pair<Integer>(a, b); //Creates pair with one type.
Pair<Integer, String> myPair = new Pair<Integer, String>(a, "Hallo Welt"); //Creates pair with two types.

我知道这段代码无论如何都是错误的,因为类可能不具有相同的名称。但这就是重点:是否可以编写一个接口(interface)来实现所需的行为?如果可以的话,如何实现?

最佳答案

由于type erasure,您尝试执行的操作不被允许。评论中提出的建议是一个很好的选择:有一个 Pair<T,K>基类并具有扩展 SingleTypePair<T>类。

class Pair<T, K> {
protected T firstEntry;
protected K secondEntry;

public Pair(T firstEntry, K secondEntry) {
this.firstEntry = firstEntry;
this.secondEntry = secondEntry;
}
}

class SingleTypePair<T> extends Pair<T, T> {

public SingleTypePair(T firstEntry, T secondEntry) {
super(firstEntry, secondEntry);
}
}

关于java - 不同泛型类的一个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22565290/

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