当存在不同的泛型类型时使用接口是否有意义

使用接口是提供抽象的好方法,如果可能的话我通常会尝试使用它。但这次我的情况有点不同,我不确定在这里使用是否是一个好的做法。


我有两个不同的类,需要一些具有相同签名的查询方法。比如说 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>查询方法的结果。


问题是我不喜欢在接口中不指定泛型类型,因为稍后我需要进行强制转换。


那么在这里使用接口是否有意义,或者更好地实现两个具有相同方法签名而没有公共接口的单独类?


喵喵时光机
浏览 83回答 1
1回答

天涯尽头无女友

问题是我不喜欢在界面中不指定通用类型......这正是你解决这个问题的方式。当我需要从列表中获取对象时,可以说 Integer x = (Integer)list.get(index);&nbsp;这只是一个例子,实际上我使用用户定义的对象。泛型的全部意义在于您不需要这样做。反而:public interface MyInterface<T> {&nbsp; &nbsp; List<T> query();&nbsp;&nbsp;}public class MyInteger implements MyInterface<Integer> {&nbsp; &nbsp; // ...}// ...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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java