作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题,想问你们为什么这段代码不起作用,以及如何在不删除泛型或方法的情况下使其工作。我认为这是因为该方法不能重载,因为 S 和 T 可以是同一类型,这是正确的吗?但我仍然不知道如何让它发挥作用。谢谢!
public class GenericFail<S,T> {
public void doAnything(S sValue){
System.out.println("Doing anything with S");
}
public void doAnything(T sValue){
System.out.println("Doing anything with T");
}
}
最佳答案
泛型类型在编译后被删除。所以这两个 doAnything()
方法具有相同的签名:
doAnything(Object object)
因为 S
和 T
没有显式派生自更具体的类型。
要解决该问题:要么将方法名称更改为具有两个不同的名称,要么使 S
和 T
派生自特定类型,例如:
public class GenericFail<S extends CharSequence, T extends Number> {
关于java - Java 中具有两个泛型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43769270/
我是一名优秀的程序员,十分优秀!