如何从所有实现java调用方法



我有一个接口

public interface GeometricObject {
public String getInfo();
}

我有两个类,它们实现了上面的接口。

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)]

只需称之为

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

我希望更简单
shapes.forEach(shape -> System.out.println(shape.getInfo()));

首先,您必须将所需的字段添加到形状中。例如,在三角形中,需要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());
}

最新更新