在面向对象编程中,泛型(Generics)是一种允许程序员在强类型程序设计语言中编写代码时定义可变部分的方法。泛型类型T
代表一个未知的类型,可以在实例化时指定具体的类型。重用扩展特定类的泛型类型T
意味着在继承或扩展一个泛型类时,继续使用这个泛型参数。
class Box<T> { ... }
interface Repository<T> { ... }
public <T> void printArray(T[] array) { ... }
List<T>
、Map<K,V>
。假设我们有一个泛型基类BaseEntity<T>
,我们想要扩展它并重用泛型类型T
。
// 泛型基类
public abstract class BaseEntity<T> {
private T id;
public BaseEntity(T id) {
this.id = id;
}
public T getId() {
return id;
}
}
// 扩展泛型基类
public class User extends BaseEntity<Integer> {
private String name;
public User(Integer id, String name) {
super(id);
this.name = name;
}
public String getName() {
return name;
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
User user = new User(1, "Alice");
System.out.println("User ID: " + user.getId());
System.out.println("User Name: " + user.getName());
}
}
Class<T>
作为类型参数来传递具体类型信息。public class GenericClass<T> {
private Class<T> type;
public GenericClass(Class<T> type) {
this.type = type;
}
public T createInstance() throws InstantiationException, IllegalAccessException {
return type.newInstance();
}
}
通过这种方式,可以在运行时创建泛型类型的实例,同时保持类型安全。
重用扩展特定类的泛型类型T
是一种强大的编程技巧,它提高了代码的复用性和灵活性,同时也带来了类型安全和编译时检查的好处。在实际应用中,需要注意泛型的限制,并通过适当的技巧来解决可能出现的问题。
领取专属 10元无门槛券
手把手带您无忧上云