繁体   English   中英

Java相同擦除编译时错误

[英]Java same erasure compile time error

我在同一个类中有两种方法:

public static Set<Type A> valueOf (Set<Type B>)
{}

public static Set<Type A> valueOf (Set<Type B>)
{}

我收到相同的擦除编译时间错误。 我该如何解决?

您的方法完全相同。 编译器将不知道使用哪个。

另外,如果您以某种方式

public static Set<Type A> valueOf (Set<Type A>)
{}

public static Set<Type B> valueOf (Set<Type B>)
{}

这两种方法也是相同的,类型标识符( AB )被编译器擦除,因此它们再次具有相同的签名。

要理解发生了什么,请用Object替换每个<GenericSomething> ,因为这是编译器看到的-这就是所谓的类型擦除 简而言之,两种方法都具有相同的签名,即

public static Set<Object> valueOf (Set<Object>)
{}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM