我有一个接口
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());
}