具有现有类的Java泛型
我没有实际的问题,我只是在玩Java泛型,我意识到如果我用泛型创建一个类,我可以为类的泛型部分使用任何名称(因此在具有现有类的Java泛型,java,generics,Java,Generics,我没有实际的问题,我只是在玩Java泛型,我意识到如果我用泛型创建一个类,我可以为类的泛型部分使用任何名称(因此在中),它将被视为一个不存在的类,作为一个变量 因此,如果我使用String作为泛型部分,它将不再是String,例如,您不能使用它的charAt()方法 我想,这是一个特性,因为通常情况下,如果我知道我想使用字符串,那么我就简单地使用它,并且我不创建泛型类 我说得对吗?如果使用包括包在内的全名,您仍然可以使用任何同名类,例如java.lang.String 问题实际上与在包中创建名为
中),它将被视为一个不存在的类,作为一个变量
因此,如果我使用String
作为泛型部分,它将不再是String
,例如,您不能使用它的charAt()
方法
我想,这是一个特性,因为通常情况下,如果我知道我想使用字符串
,那么我就简单地使用它,并且我不创建泛型类
我说得对吗?如果使用包括包在内的全名,您仍然可以使用任何同名类,例如
java.lang.String
问题实际上与在包中创建名为
String
的类相同。您可以这样做,但是您还需要承受这样的后果:同一个包中的类将使用这个类而不是标准的字符串类。泛型允许我们使用不同类型的单个实现
例如,从java中考虑<代码>集合框架< /代码>。List
是一种通用类型,您可以在java中创建任何类型的List
。它为您提供了不同的有用操作,您可以在不同类型上执行这些操作,如原始类型的包装器类
如果对自定义类型使用泛型,则可能需要指定一些实现来支持泛型功能您仍然可以使用类型的常规行为
List<String> list = new ArrayList<String>();
List List=new ArrayList();
这是类型
字符串的列表。您可以像wise一样创建任何列表。现在,您可以轻松地使用java提供的许多功能。现在,如果您需要为Integer
提供相同的功能,那么您需要重新编写相同的功能。java中名称的含义在很大程度上取决于上下文。在同一个.java文件中,相同的名称可以用来表示不同的内容。e、 请看,您可以限制泛型类型参数以扩展现有类型,在这种情况下,您可以使用该类型的方法。这就是你的意思吗?那是因为两个变量之间的名称只是一个名称-一个类型变量的名称。就像你可以给正则变量一个类名一样。是的,我知道,但是从这个答案我看到我正确地理解了这件事,谢谢。不幸的是,这是一个好问题。但是,重要的是要知道阴影和模糊的概念,这是您在示例中看到的。根据这些规则,类型变量被算作变量。java.lang.String
的含义也非常模糊:)它也可能意味着example@bayou.io是的,创建一个无法通过简单或限定名称访问某物的示例相对容易。