Ran*_*ku' 6 java generics methods
如何使用具有两个参数的方法,两个参数具有相同的具体类型?
例如,
boolean equals(Object a, Object b)
Run Code Online (Sandbox Code Playgroud)
允许a任何类型和b任何类型.
我想强制这样,a并b具有相同的具体类型.我试过了
<T> boolean equals(T a, T b)
Run Code Online (Sandbox Code Playgroud)
并输入a Date和a String到该方法,期望编译时错误,但我没有错误,因为T将解析? extends Serializable & Comparable,因为两者Date和String实现Serializable和Comparable.
基本上你不能.没有办法做到这一点.即使您可以通过简单的调用来禁止不同类型的参数,也可以使用强制转换来绕过它:
equals((Object) date, (Object) string)
Run Code Online (Sandbox Code Playgroud)
如果您对参数的执行时类型感兴趣,则只能在执行时测试它.编译器无法知道类型的参数是否Date具有对精确的java.util.Date或某个子类的引用的值.
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |