我正在尝试创建一个通用容器(例如下面的Java代码),它具有一些限制,例如不能将大于某个限制的项目放入其中。问题在于,由于T是未知类型,具有整数的比较函数报告错误。如何解决这个问题?
其次,如果代码是用C ++编写的,是否有解决方案?
public class Box<T> {
private T val;
private int max;
public Box (int m, T initval) { max = m; val = initval; }
public T get() { return val; }
public void set(T newval) {
val = newval;
if(newval.toInt() >= max) // error on toInt
System.out.printf("ERR: size too big\n");
}
}
最佳答案
你应该有
interface ToIntable {
int toInt();
}
和
public class Box<T extends ToIntable> {
...
if (newval.toInt() >= max) doSomething();
...
}