java - 如何通过传递不同的类对象来重用方法?

标签 java

我有 3 个模型类,例如 A 类、B 类和 C 类,它们具有相同的变量和相同的 setter 和 getter 方法。

这三个模型都有 getname() 和 setName(String s) 方法。

另一个我有 Controller 类,我在其中创建了一个方法。如下所述:

public void method1(Object obj)
{
 String s = obj.getname();
}

现在我想通过传递模型类参数来调用这个方法,比如 method1(A a), method1(B b)

我想通过传递不同的类实例来重用上述方法。

下面我提到了我想要的整个场景。

 public class Controller {
   public void method1(Object obj)
   {
     String s = obj.getname();
   }

   public void callingMethod()
   {
     if(somecondtion)
     { 
       method1(new A());
     }
     if(somecondtion)
     { 
       method1(new B());
     }

     if(somecondtion)
     { 
       method1(new C());
     }

   }

当我执行上面的代码时,java 提示我“方法无法解析”的错误

如何解决上述问题?

谢谢

最佳答案

创建一个具有相同签名的通用接口(interface)。在类 A、B、C 中实现接口(interface)。现在通过接口(interface)。举个一般的例子

这是所有常用签名的接口(interface)。

interface Root{
   commonMethods();
}

这里是实现了 Root 的类 A、B、C

class A implements Root{
{
   commonMethods(){
       // implementations
   }
}

class B implements Root{
{
   commonMethods(){
       // implementations
   }
}

class C implements Root{
{
   commonMethods(){
       // implementations
   }
}

现在在你需要使用它们的方法中

public void method1(Root obj)
{
     obj.commonMethods();  // call the method
}  

所以你需要这样调用

method1(new A());
method1(new B());

现在 commonMethod() 将被作为参数传递的 A 或 B 类调用

最后,这个设计叫做Strategy Design Pattern

更新

我个人的建议是实现上述解决方案。但是因为你不想使用它,你可以像下面这样简单地使用

public void method1(Object obj)
{
 String s = "";
 if(obj instanceof A)
     s = ((A)obj).getname();
 if(obj instanceof B)
     s = ((B)obj).getname();
 if(obj instanceof C)
     s = ((C)obj).getname();
}

关于java - 如何通过传递不同的类对象来重用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16870264/

相关文章:

java - "java.lang.NoSuchMethodError: org.apache.commons.fileupload.FileUploadBase.isMultipart"请帮我解决这个异常

java - StringIndexOutOfBoundsException 字符串索引超出范围错误

java - Spring Cloud Stream 确定主题 Kafka 消息来自何处

java - 如何 append 变量 ID - AndroidX

java - JDialog 因失去焦点而卡住?

java - 代码模型 : manually insert import statement

java - 启动 jboss 服务器时出错

java - 使用非总排序标准对 java 流进行排序。

java - Struts 中的 Json 插件和全局异常

java - 什么是NullPointerException,我该如何解决?