在 Java 中,泛型接口就是带类型参数的接口。实现泛型接口主要有 两种方式:
✅ 实现时指定具体类型
✅ 实现类继续保留泛型
下面用例子一步步说明。
public interface Repository<T> {
void save(T t);
T findById(int id);
}
T 是泛型参数,表示某种类型。
实现接口时直接指定泛型的具体类型。
public class UserRepository implements Repository<User> {
@Override
public void save(User user) {
System.out.println("保存用户:" + user);
}
@Override
public User findById(int id) {
return new User();
}
}
✅ 优点:
如果实现类还不确定具体类型,可以继续保留泛型。
public class GenericRepository<T> implements Repository<T> {
@Override
public void save(T t) {
System.out.println("保存:" + t);
}
@Override
public T findById(int id) {
return null;
}
}
使用时再指定类型:
Repository<String> repo = new GenericRepository<>();
repo.save("hello");
✅ 适合:
public interface Mapper<K, V> {
V map(K key);
}
实现:
public class StringToIntMapper implements Mapper<String, Integer> {
@Override
public Integer map(String key) {
return key.length();
}
}
public interface Service<T> {
<R> R convert(T t);
}
接口泛型 T ≠ 方法泛型 R,两者可以共存。
class A implements Repository {} // ❌ 不推荐(使用原始类型)
interface A<T> {
static void test(T t) {} // ❌ 编译错误
}
泛型接口的实现方式取决于你是否已经确定具体类型
- 确定了 → 直接指定类型
- 不确定 → 实现类继续带泛型
如果你愿意,我也可以结合 List / Comparator / Spring 泛型接口 给你讲实际项目用法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。