Java 如何为两个不同的类提供相同的接口?

Java 如何为两个不同的类提供相同的接口?,java,Java,我可以给两个不同的类(我不能修改,因为它们是自动创建的webservice类)相同的接口吗 问题:我有几个自动创建的webservice类,它们有一个具有相同签名的方法。但由于这些类没有公共接口,我无法对它们进行分组,因此无法从一个方法中同时调用这两个类 例如: class A { void sameMethod(); } class B { void sameMethod(); } class MyService() { //I cannot do the following

我可以给两个不同的类(我不能修改,因为它们是自动创建的webservice类)相同的接口吗

问题:我有几个自动创建的webservice类,它们有一个具有相同签名的方法。但由于这些类没有公共接口,我无法对它们进行分组,因此无法从一个方法中同时调用这两个类

例如:

class A {
  void sameMethod();
}
class B {
  void sameMethod();
}


class MyService() {
  //I cannot do the following as I cannot group A and B with the same interface
  void callAorB(<Class A or B> object) {
     object.sameMethod();
  }
}
A类{
void sameMethod();
}
B类{
void sameMethod();
}
类MyService(){
//我无法执行以下操作,因为我无法使用相同的接口将A和B分组
void callAorB(对象){
object.sameMethod();
}
}

即使我不能在a类
B类`之间建立一个共同的参照关系,仍然可以执行òobject.sameMethod()
吗?

被黑客攻击的解决方案是:

if(object instanceof A)
   ((A)object).sameMethod();
else if(object instanceof B)
   ((B)object).sameMethod();

但是如果你能让他们实现一个接口,那就更好了如果你不能修改类,那么不,你不能把接口强制到对象上。但是,您可以创建一个接口和两个实现此接口的接口。

为什么不能让它们实现相同的接口,并在您的服务方法签名中输入接口类型?不是具体的类?为什么不定义一个接口并让它们实现它?无法声明某些类以这样或那样的方式实现接口确实是Java最大的弱点之一。@Ingo-hmm,在运行时声明接口会很有趣。但听起来好像更多reflection@Cruncher我的意思是在编译时,当然。。。让编译器生成创建适配器和样板文件所有其他部分的代码。在现实世界中,您并不想这样做applications@LuiggiMendoza为什么不呢?@alfasin因为当你开始使用新的实现,比如
C
D
类时,很难维护它。。。使用适配器(正如您在另一个答案中投票时所做的那样)可能会过于简单。另外,请注意,Cruncher甚至说这是一个黑客破解的解决方案,所以这不是问题的真正解决方案。我不确定这是否值得否决。我在帖子的开头警告说,这实际上是一个黑客破解的解决方案。不过,这是一个解决方案,它为任何想快速、高效地完成这项工作的人增加了价值easy@LuiggiMendozaOP特别指出他指的是两个班级。这是一个很好的解决方案!适配器可能更优雅、更“面向对象”,但这肯定比为C或C编写新适配器更容易维护D@ant没有一个“正确”的解决方案——不要阻碍创造力:)没错,没有人,但这就是其中之一