java - Java代码解释

标签 java generics

今天早上我看到这段代码,我完全不知道那是什么意思。谁能解释一下这些是做什么的 <T>代表?例如:

public class MyClass<T>
...

some bits of code then 

private Something<T> so;

private OtherThing<T> to;

private Class<T> c;

谢谢

最佳答案

您遇到了“泛型”。在此 guide 中对它们进行了很好的解释.

简而言之,它们允许您指定存储类的类型,例如 ListSet包含。如果你写 Set<String> , 你已经声明这个集合必须只包含 String s,如果你试图在其中放置其他内容,将会出现编译错误:

Set<String> stringSet = new HashSet<String>();
stringSet.add("hello"); //ok.
stringSet.add(3);
      ^^^^^^^^^^^ //does not compile

此外,泛型可以做的另一个有用示例是它们允许您更紧密地指定抽象类:

public abstract class AbstClass<T extends Variable> {

这样,扩展类就不必扩展Variable了。 ,但他们需要扩展一个扩展 Variable 的类.

因此,一个处理 AbstClass 的方法可以这样定义:

public void doThing(AbstClass<?> abstExtension) {

哪里?是一个通配符,意思是“所有用 AbstClass 扩展 Variable 的类”。

关于java - Java代码解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2719776/

相关文章:

java - Jersey Restful 失败,错误为 "java.lang.NoSuchMethodException: Could not find a suitable constructor"

java - 一张图像中的多个 OHLC 数据集

java - 为什么我的java程序每次都打印零?

c# - 一个只能采用特定类型的通用类

java - 为什么为非泛型方法或构造函数提供显式类型参数会编译?

java - 如何用Java创建多个屏幕?

java - org.apache.http.client.ClientProtocolException异常

c# - 继承泛型类型和约束时的类型推断

c# - 如何通过名称激活派生类型?

java - 泛型示例不起作用?替代方案或建议?