我是 Java 的新手,正在尝试做类似于以下 C++ 模板的事情:
template <int value_>
class Foo{
....
};
具有不同 value_
的实例化行为相同,但具有不同 value_
的两个实例之间的交互将取决于 value1
和 value2
。特别是,如果某些函数中的 value1 != value2
会导致编译时失败。
一种可能的解决方案可能是将此类值存储在 java 类中并抛出运行时异常,但编译时检测会很有用。
最佳答案
Java 最接近模板的是 generics ,但它严格限于强制使用“正确的”类型。 Java 没有任何基于值的模板机制。
您最好的办法是通过为您感兴趣的值创建一系列包装类来模拟此行为:
例如,一个接口(interface):
public interface IntWrapper {
int getValue();
}
和几个实现:
public class OneWrapper implements IntWrapper {
@Override
public int getValue() {
return 1;
}
}
public class TwoWrapper implements IntWrapper {
@Override
public int getValue() {
return 2;
}
}
然后使用它们来模拟 int 值:
public class Foo <T extends IntWrapper> {
public void interact (T other) {
// ...
}
}
关于Java 等效于 C++ 模板 <int val> class foo{ };,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28791030/