我正在使用JAVA7。我需要使用泛型来编写类,这些泛型将作用于特定的类。我怎么写?
班级名称:SomeClass.java
它应该只接受SomeOtherClass.java
的类类型。
我可以写下面的内容吗?
public class SomeClass<SomeOtherClass> {
}
谢谢!
答案 0 :(得分:2)
不,你不能像你所说的那样写。您的表示法声明了一个名为SomeOtherClass
的新类型变量。它与SomeOtherClass
类型无关。
而是声明一个类型变量并给它一个绑定
public class SomeClass<T extends SomeOtherClass> {
现在,类型变量T
的上限为SomeOtherClass
。
这意味着SomeClass
类型的参数化使用必须提供SomeOtherClass
或其任何子类型的类型参数。
答案 1 :(得分:0)
你是什么意思&#34;接受&#34;只有一种类型?从我猜测的问题来看,你并不确切知道什么是仿制药。
public class SomeClass<T> {
private T it;
public T getIt() {
return it;
}
public void setIt(T it) {
this.it = it;
}
}
public static void main(String...args) {
SomeClass<String> someClass = new SomeClass<String>();
someClass.setIt("this is it!");
System.out.println(someClass.getIt());
}
此示例中的泛型允许您(开发人员编写main方法)指定哪种类型T使代码更清晰,更安全,因为编译器可以检查您确实使用了您定义的类型。如果你想尝试:
someClass.setIt(5);
这会产生编译器错误,因为您将其定义为String。
在这方面,没有必要只定义一个特定的类。你可以做的是:
public class SomeClass<T extends SomeOtherClass>
这使您可以说开发人员必须将T定义为SomeOtherClass的扩展。这意味着当在SomeClass中使用T时,您(和编译器)可以假设它至少是SomeOtherClass类型并使用那里可用的任何方法。