我有两个不同的类,需要一些具有相同签名的查询方法。比如MyString和MyInteger。
我想用一个方法定义一个接口: public interface MyInterface{
// no type is specified for the list, because each implementation will have different type of object List query();
} 所以基本上我需要实现两个不同的类,这些类实现了上面的接口。第一个将获得List
,第二个将从List
查询方法中获得结果。
我不喜欢在接口中不指定泛型,因为我以后需要转换。
那么在这里使用接口是否有意义,或者在没有公共接口的情况下更好地实现具有相同方法签名的两个单独的类呢?
泛型的关键是你不需要这样做。 public interface MyInterface
{ List
query();
}
public class MyInteger implements MyInterface { // ... }
// ... MyInteger foo = new MyInteger();
// ... List list = foo.query();
// ... Integer i = list.get(index); 或使用var,因为它已经使用了一段时间的语言:// ... var foo = new MyInteger();
// ... var list = foo.query();
// ... var i = list.get(index); 如果您你要实现多个类,MyInterface 并且需要以一种通用的方式来处理这些类的实例(例如,用MyInterface 引用它们而不是类),并且/或者如果MyInterface代表了整个结构的某些基本方面,那么使用接口可能很有意义。如果没有,仅仅是因为你要使用List query方法来使用两个不同的类,那么可能就没有。这取决于整体设计和风格。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。