【问题标题】:How to call a method from all implement java如何从所有实现java中调用方法
【发布时间】:2021-12-30 00:18:17
【问题描述】:

我只有一个界面

public interface GeometricObject {
    public String getInfo();
}

我有 2 个类,它们实现了上述接口。

public class Circle implements GeometricObject {
   @Override
   public String getInfo() {
      return "Circle[center,radius]";
   }
}

public class Triangle implements GeometricObject {
   @Override
   public String getInfo() {
      return "Triangle[p1,p2,p3]";
   }
}

现在我有了这个类来显示所有信息:

public class shapeUtils{
   public String printInfo(List<GeometricObject> shapes) {
      //code here
   }
}

如何在该列表的所有实现中调用该方法

例如

Circle:
Circle[(1,2),r=3]
Circle[(5,6),r=2]
Triangle:
Triangle[(1,2),(2,3),(3,0)]
Triangle[(-1,-3),(-5,3),(0,0)]

【问题讨论】:

    标签: java list interface implements


    【解决方案1】:

    随便叫

    for (GeometricObject  shp : shapes) {
        System.out.println (shp.getInfo());
    }
    

    【讨论】:

    • 感谢您的帮助!我只是似乎很困惑!
    • 请考虑接受这个答案。
    【解决方案2】:

    我想要更简单。
    shapes.forEach(shape -&gt; System.out.println(shape.getInfo()));

    【讨论】:

    • 感谢您的帮助!我只是似乎很困惑!
    【解决方案3】:

    首先,您必须将所需的字段添加到您的形状中。例如,在三角形中,您需要 p1、p2、p3。如果您想打印正确的值,它们必须是类的一部分。

    例如:

    public class Circle implements GeometricObject {
      
       private double center;
       private double radius;
    
       @Override
       public String getInfo() {
          return "Circle[ " + this.center + ", " + this.radius + " ]";
       }
       // Getters and setters
    }
    

    你对所有的形状都做同样的事情。

    你可以用这样的对象填充一个列表:

    java.util.List<GeometricObject> shapes = new ArrayList<>();
    
    Circle circle = new Circle(); // Initialize it
    
    circle.setCenter(2); // Set the values
    circle.setRadius(2);
    
    shapes.add(circle); // Add it to the list
    
    // Add some more objects into the list...
    
    
    // Print them:
    
    for (GeometricObject  shape : shapes) {
        System.out.println(shape.getInfo());
    }
    

    【讨论】:

    • 感谢您的帮助!我只是似乎很困惑!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2010-10-30
    相关资源
    最近更新 更多