为两个java类创建一个包装器

时间:2014-02-25 11:26:16

标签: java

在我的项目中,我使用了已在其他库中实现的两个接口(VertexNode)。我想在这两个接口的列表中添加对象,所以我必须定义一个接口,因为它们是不同的类型。我要创建一个接口,例如NodeInterface和NodeImpl,VertexImpl实现,它们是上述接口的包装器。我怎样才能做到这一点?

3 个答案:

答案 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
        }
    }