在我的项目中,我使用了已在其他库中实现的两个接口(Vertex和Node)。我想在这两个接口的列表中添加对象,所以我必须定义一个接口,因为它们是不同的类型。我要创建一个接口,例如NodeInterface和NodeImpl,VertexImpl实现,它们是上述接口的包装器。我怎样才能做到这一点?
答案 0 :(得分:1)
不确定这是你想要做的事情:
你已经拥有:
public interface Vertex {...}
public interface Node {...}
public class VertexImpl implements Vertex {...}
public class NodeImpl implements Node {...}
这就是你需要的:
public class Wrapper implements Vertex, Node {
private VertexImpl vertexImp;
private NodeImpl nodeImp;
//methods that wrap Vertex and Node implementations' ones
...
}
答案 1 :(得分:0)
class NodeInterface implements Vertex , Node
{
}
这不会解决问题吗?
答案 2 :(得分:0)
让您的实现实现一个公共(可能是空的)接口,让我们称之为Point:
public class VertexImpl implements Vertex, Point
public class NodeImpl implements Node, Point
将它们添加到同一列表中:
ArrayList<Point> points = new ArrayList<Point>();
points.add(new VertexImpl());
points.add(new NodeImpl());
当您从列表中检索它们时,请检查类型:
for(Point point: points) {
if (point instanceof Node) {
System.out.println("node");
// (Node)point
} else {
System.out.println("vertex");
// (Vertex)point
}
}