我没有遇到实际问题,我只是在玩Java Generics而且我意识到如果我用Generics创建一个类,我可以使用任何名称作为类的泛型部分(所以在<>
),它将被视为不存在的类,作为变量。
因此,如果我使用String
作为通用部分,它将不再是String
,因此例如,您无法使用其charAt()
方法。< / p>
我想,这是一个功能,因为通常情况下,如果我知道我想要使用String
而不是简单地使用它,我就不会创建一个通用类。
我是对的吗?
答案 0 :(得分:4)
如果使用包括包的全名,您仍然可以使用任何具有相同名称的类,例如java.lang.String
。
问题实际上与在程序包中创建名为String
的类相同。您可以这样做,但是您还需要了解同一个包中的类将使用此类而不是标准String类的后果。
答案 1 :(得分:1)
通用允许我们使用不同类型的单个实现。
例如,考虑java中的collection framework
。 List<T>
是一种泛型类型,您可以在java中创建任何类型的List
。它为您提供了不同的有用操作,您可以在不同的类型上执行它,如原始类型的包装类。
如果您将自定义类型用于自定义类型,那么您可能需要指定一些实现来支持通用功能。 您仍然可以使用类型的一般行为。
List<String> list = new ArrayList<String>();
这是String
类型的列表。您可以像智者一样创建任何List
。现在您可以轻松使用java提供的许多功能。现在,如果您需要Integer
的相同功能,那么您需要重新编写相同的功能。