【发布时间】:2021-01-14 03:11:06
【问题描述】:
下面的代码
public class T<T> {
public String toString() {
return "Generic Types!";
}
public void run(T var) {
Integer repeatCount = 12_57;
System.out.println("debug: " + repeatCount + ", " + var.toString());
}
public static void main(String[] args) {
System.out.println("Hello, World!");
T<String> t = new T();
t.run(t);
}
}
public class T<T> 行给出警告 The type parameter T is hiding the type T<T> 。
T<String> t = new T() 行给出错误cannot make a static reference to non-static type T。
如果我将 public class T<T> 更改为 public class T<K> ,它适用于以下输出。但我不明白原因。
输出:
Hello, World!
debug: 1257, Generic Types!
我是泛型概念的新手,谁能解释一下上面的代码有什么问题?
【问题讨论】:
-
你能解释一下你是否(如果是的话为什么)你想要使用这个令人困惑的命名?也许我们可以澄清一些潜在的混乱!通常,类名是描述性的,泛型参数是某事物的首字母,例如
T代表类型,E代表元素,K/V代表键/值等。为什么要将类命名为T? -
这是我用来学习泛型 @Mark 的实验课,我明白命名约定是不正确的。