1 回答
TA贡献1831条经验 获得超9个赞
问题是我不喜欢在界面中不指定通用类型......
这正是你解决这个问题的方式。
当我需要从列表中获取对象时,可以说 Integer x = (Integer)list.get(index); 这只是一个例子,实际上我使用用户定义的对象。
泛型的全部意义在于您不需要这样做。反而:
public interface MyInterface<T> {
List<T> query();
}
public class MyInteger implements MyInterface<Integer> {
// ...
}
// ...
MyInteger foo = new MyInteger();
// ...
List<Integer> list = foo.query();
// ...
Integer i = list.get(index);
或者使用var,因为它已经出现在该语言中一段时间了:
// ...
var foo = new MyInteger();
// ...
var list = foo.query();
// ...
var i = list.get(index);
那么在这里使用接口是否有意义,或者更好地实现两个具有相同方法签名而没有公共接口的单独类?
那要看。如果您将有多个要实现的类,并且您需要以通用方式处理这些类的实例(例如,因此您用而不是类来MyInterface<Integer>引用它们)和/或如果代表整体结构的某些基本方面,那么使用接口可能是有意义的。如果不这样做,如果只是要拥有两个带有方法的不同类,则可能不会。这取决于整体设计和(有点)风格。MyInterface<Integer>MyInterfaceList<something> query
添加回答
举报