比较基本类型和泛型类型

时间:2014-03-08 12:21:42

标签: java operator-keyword

如何将通用成员与原始类型进行比较?

说,

void method(T k) {
   if(k < 10) ...
}

与C / C ++不同,人们不能在Java中重载运算符,对吗? 为了评估上面的代码片段,我是否必须将k转换为实际类型?有没有比使用铸造更优雅的方法来解决这个问题?

2 个答案:

答案 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的启发