如何使用C++ tempates之类的东西替换这两个函数?
public void verify(final int[] array, final int v) {
    for ( final int e : array ) if ( e == v || v == e  ) return;
    abort_operation();
}
public void verify(final double[] array, final double v) {
    for ( final double e : array ) if ( e == v || v ==  e  ) return;
    abort_operation();
}
Jon*_*eet 12
基本上你不能.Java泛型不适用于基本类型.你可以用反射来做,但它会很难看.你也可以使用盒装类型,如下所示:
public <T> void verify(T[] array, T value) {
   if (!Arrays.asList(array).contains(value)) {
       abortOperation();
   }
}
...但是,这只会为工作Integer[]和Double[],不int[]和double[].
这就是为什么Arrays类对于像binarySearch...这样的方法有如此多的重载的原因,如果你的方法可以是通用的,那么那些方法也可以.
从根本上说,泛型是不一样的C++模板.它们涵盖了很多相同的用例,但它们并不相同,你不应该惊讶地看到一些区域被一个区域覆盖而另一个区域覆盖.
| 归档时间: | 
 | 
| 查看次数: | 103 次 | 
| 最近记录: |