Java泛型与现有类

时间:2015-09-25 17:06:33

标签: java generics

我没有遇到实际问题,我只是在玩Java Generics而且我意识到如果我用Generics创建一个类,我可以使用任何名称作为类的泛型部分(所以在<>),它将被视为不存在的类,作为变量。

因此,如果我使用String作为通用部分,它将不再是String,因此例如,您无法使用其charAt()方法。< / p>

我想,这是一个功能,因为通常情况下,如果我知道我想要使用String而不是简单地使用它,我就不会创建一个通用类。

我是对的吗?

2 个答案:

答案 0 :(得分:4)

如果使用包括包的全名,您仍然可以使用任何具有相同名称的类,例如java.lang.String

问题实际上与在程序包中创建名为String的类相同。您可以这样做,但是您还需要了解同一个包中的类将使用此类而不是标准String类的后果。

答案 1 :(得分:1)

通用允许我们使用不同类型的单个实现。

例如,考虑java中的collection frameworkList<T>是一种泛型类型,您可以在java中创建任何类型的List。它为您提供了不同的有用操作,您可以在不同的类型上执行它,如原始类型的包装类。

如果您将自定义类型用于自定义类型,那么您可能需要指定一些实现来支持通用功能。 您仍然可以使用类型的一般行为

List<String> list = new ArrayList<String>();

这是String类型的列表。您可以像智者一样创建任何List。现在您可以轻松使用java提供的许多功能。现在,如果您需要Integer的相同功能,那么您需要重新编写相同的功能。