如何将泛型成员与基元类型进行比较?
说,
void method(T k) {
if(k < 10) ...
}与C/C++不同,Java中不能重载操作符,对吗?为了评估上述片段,是否必须将k转换为实际类型?有比使用铸造更优雅的方法来解决这个问题吗?
发布于 2014-03-08 12:43:08
您的泛型类型可能会被迫实现一个特定的接口,在一个单独的方法中进行比较。有了这个版本,你的T类也可能会被另一个类欺骗。
public interface CompareToInt {
public boolean less(int that);
}你的课用你的方法:
public class Dummy<T extends CompareToInt> {
void method(T k){
if (k.less(10)){
// ... do stuff
}
}
}编辑:
我的解决方案是受波帕尔卡的启发
发布于 2014-03-08 12:27:44
如果您的类型T扩展了数字,请在类签名中使用此信息
public class Num<T extends Number> {
void method(T a){
if (a.intValue()<10){
}
}
}https://stackoverflow.com/questions/22269253
复制相似问题