我没有一个实际的问题,我只是玩弄Java泛型,我意识到如果我用泛型创建一个类,我可以使用任何名称作为泛型部分的类所以在<>
内),它将被视为一个不存在的类,作为一个变量。Java泛型与现有类
因此,如果我使用String
作为通用部分,它不会再是String
,因此例如您不能使用它的charAt()
方法。
我想,这是一个功能,因为通常情况下,如果我知道我想要使用String
比我简单地使用它,并且我不创建泛型类。
我对不对?
我没有一个实际的问题,我只是玩弄Java泛型,我意识到如果我用泛型创建一个类,我可以使用任何名称作为泛型部分的类所以在<>
内),它将被视为一个不存在的类,作为一个变量。Java泛型与现有类
因此,如果我使用String
作为通用部分,它不会再是String
,因此例如您不能使用它的charAt()
方法。
我想,这是一个功能,因为通常情况下,如果我知道我想要使用String
比我简单地使用它,并且我不创建泛型类。
我对不对?
通用允许我们使用不同类型的单个实现。
例如,考虑来自java的collection framework
。 List<T>
是一种通用类型,您可以在java中创建任何类型的List
。它为您提供了不同的有用操作,您可以在不同的类型(如原始类型的包装类)上执行这些操作。
如果您为自定义类型使用泛型,那么您可能需要指定某些实现来支持泛型功能。 您仍然可以使用类型的一般行为。
List<String> list = new ArrayList<String>();
这是一个表格类型String
的列表。您可以像明智一样创建任何List
。现在,您可以轻松使用由java提供的许多功能。现在,如果您需要Integer
的相同功能,那么您需要重新编写相同的功能。
java中名字的含义高度依赖于上下文。在相同的.java文件中,可以使用相同的名称来表示不同的内容。例如请参阅http://stackoverflow.com/q/17690135/2158288 – ZhongYu
您可以限制泛型类型参数以扩展现有类型,在这种情况下,您可以使用该类型的方法。你是这个意思吗? –
这是因为<>之间的名称只是一个名称 - 一个类型变量的名称。就像你可以给定一个类的同名变量一样。这样做不是个好主意,因为它很混乱。 – Jesper