如何将通用成员与原始类型进行比较?
说,
void method(T k) {
if(k < 10) ...
}
与C / C ++不同,人们不能在Java中重载运算符,对吗? 为了评估上面的代码片段,我是否必须将k转换为实际类型?有没有比使用铸造更优雅的方法来解决这个问题?
答案 0 :(得分:4)
如果您的类型T扩展了Number,请在类签名
中使用此信息public class Num<T extends Number> {
void method(T a){
if (a.intValue()<10){
}
}
}
答案 1 :(得分:4)
您的泛型类型可能会被强制实现某个界面,该界面以单独的方法进行比较。使用此版本,您的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
}
}
}
修改强>
我的解决方案受到了popalka的启发