This question already has answers here:
How to write a generic method that takes two arguments of the same types in java?
(3个答案)
去年关闭。
我目前正在建立具有结对结构的课程。我想以某种方式保证对中的每个成员都具有完全相同的类型。
我的问题朝向:How type inference work for method calls?
以下代码说明了我的问题:
Java中有没有办法使Call 1变得不可能,并且总是需要像Call 2中那样的类型规范?
(3个答案)
去年关闭。
我目前正在建立具有结对结构的课程。我想以某种方式保证对中的每个成员都具有完全相同的类型。
我的问题朝向:How type inference work for method calls?
以下代码说明了我的问题:
public class MyClass {
public class MyPair<E> {
private E oldObj;
private E newObj;
MyPair(E pOldObj, E pNewObj) {
oldObj = pOldObj;
newObj = pNewObj;
}
}
public class MyObject {
List<MyPair<?>> listWithPairs = new ArrayList<>();
public <T> void addPair(T oldObj, T newObj) {
listWithPairs.add(new MyPair<T>(oldObj, newObj));
}
}
public static void main(String[] args) {
MyObject pairHolder = new MyObject();
pairHolder.addPair(12L, "asdf");//Call 1
pairHolder.<Long>addPair(12L, 12L);//Call 2
}
}
Java中有没有办法使Call 1变得不可能,并且总是需要像Call 2中那样的类型规范?
最佳答案
也许通过这样声明您的方法
public <T extends Number> void addPair(T oldObj, T newObj) {
listWithPairs.add(new MyPair<T>(oldObj, newObj));
}