具有这样的通用方法:
<T> void assertEquals(T expected, T actual) { }
没有避免避免比较不同类型的类型安全:您可以将任何内容传递给此方法,因为它会
T退化到其上限
Object:
assertEquals("string", 0); // Compiles fine, even though they can't be equal.
Ideone demo
而且也不能使用任何方法
expected和
actual未上找到
Object。因此,
T基本上就是
Object。
这样,添加泛型只会使实现变得过于复杂。
现在,您可以定义一个这样的类:
class GenericAssert<T> { void assertEquals(T expected, T actual) { }}
你可以这样使用:
new GenericAssert<String>().assertEquals("string", 0); // Compiler error.
因为您现在
assertEquals在类级别将更严格的上限放在的可接受参数上。
但这感觉有点尴尬。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)