【发布时间】:2020-02-07 14:29:39
【问题描述】:
使用接口是提供抽象的好方法,如果可能,我通常会尝试使用它。但是这次我有一点不同的情况,我不确定在这里使用是否是一个好习惯。
我有两个不同的类,它们需要一些具有相同签名的查询方法。让我们说 MyString 和 MyInteger。
我正在考虑用一种方法定义一个接口:
public interface MyInterface{
// no type is specified for the list, because each implementation will have different type of object
List query();
}
所以基本上我需要实现两个不同的类来实现上面的接口。第一个会得到List<String>,第二个会得到List<Integer>查询方法的结果。
问题是我不喜欢在接口中不指定泛型类型,因为我需要稍后进行转换。
那么在这里使用接口是否有意义,或者更好地实现两个具有相同方法签名但没有公共接口的单独类?
【问题讨论】:
-
为什么不是
MyInterface<T>和List<T>?你是什么意思“稍后投射”?听起来您的设计是错误的(或者您误解了界面类型如何影响事物)。 -
“问题是我不喜欢在接口中不指定泛型类型,因为我需要稍后进行转换。” 你是什么意思?你能告诉我们你认为有问题的事情吗?因为从表面上看,
MyInterface应该采用一个泛型参数,它适用于query的返回,正如 Kayaman 所说。 -
当我需要从列表中获取对象时,可以说 Integer x = (Integer)list.get(index);这只是一个例子,我确实使用了用户定义的对象。
-
不确定“具有相同签名的方法”是否是拥有接口的最佳理由。更多关于正在建模的问题(语义?)
标签: java oop inheritance interface