Java 泛型代码中的错误扩展数字超整数?

Java 泛型代码中的错误扩展数字超整数?,java,generics,point,Java,Generics,Point,此代码中有一个错误,但我不知道如何进行更正: public class Point<T extends Number super Integer>{ } 公共类点{ } 公共类点{ } 还是这个 public class Point<T extends Integer>{ } 公共类点{ } 你不能那样使用super。请参见此处:Super仅对通配符有效,对命名类型参数无效 让我们想象一下编译器允许这样做。只有两种类型可以说是扩展了Number,并且是Intege

此代码中有一个错误,但我不知道如何进行更正:

public class Point<T extends Number super Integer>{
}
公共类点{
}
公共类点{
}
还是这个

public class Point<T extends Integer>{
}
公共类点{
}

你不能那样使用
super
。请参见此处:

Super仅对通配符有效,对命名类型参数无效

让我们想象一下编译器允许这样做。只有两种类型可以说是扩展了Number,并且是Integer的超类型,它们是Number和Integer

我很难看出这样做比直接使用带有int字段的非泛型点类型有什么好处

如果实际情况更复杂,并且您需要一个可以使用双精度、整数等的通用点,那么如果数字限制有助于避免错误,请使用T扩展数字

然而,仅仅拥有T extends Number并不能让您访问+、-、*,等等。您可能需要类型类模式,这涉及到从创建泛型类型的点到发生数值操作的点之间传递一个单独的操作字典

例如:

接口数字操作{
T加(tx,ty);
T减去(tx,ty);
T乘(tx,ty);
...
}
您需要定义该类型类的实例,例如,publicstaticfinalnumericoperations intOperations=newnumericoper


…并在Point的方法中传递这些实例以获得加号、减号等。

您只能使用带有通配符的
super
关键字

您应该看看PECS原则:提供者扩展了消费者

super关键字用于使用者泛型对象的泛型方法中

示例:

public void copyList(List<? extends Number> elementsToBeCopied, 
    List<? super Integer> listToBeFilled) {...}

public void copyList(ListIts a find the error.java:2:expected public class Point{在有人说之前,请不要编辑此问题以获得标记。
interface NumericOperations<T extends Number> {
    T plus(T x, T y);
    T subtract(T x, T y);
    T multiply(T x, T y);
    ...
}
public void copyList(List<? extends Number> elementsToBeCopied, 
    List<? super Integer> listToBeFilled) {...}