在java中组合2个对象

时间:2011-12-06 18:35:30

标签: java class interface

我在Google上搜索时发现了这段代码:

public interface Combine {
    // Combines 2 objects
    public Object combine(Object o1, Object o2);
}

我想使用上面的代码在主类中组合两个对象。我如何声明一个Combine对象来实现我的目的?

7 个答案:

答案 0 :(得分:3)

您将创建一个实现Combine接口的类,并覆盖public Object combine(Object o1, Object o2)以执行您的情况中的任何操作,以组合这两个参数。

class Droplet implements Combine { 

    @Override
    public Object combine(Object dropOne, Object dropTwo) {

        //write combine code for droplets and return a newly combined droplet

    }

}

使用泛型查看Marcelos答案以获得更精彩的解决方案 - 这样您就可以传入您感兴趣的特定类型,而不仅仅是Object

答案 1 :(得分:3)

根据类别,“组合”的逻辑会改变。首先,该类需要实现Combine接口,然后您必须为combine()方法编写逻辑,例如:

public interface Combine<T> {
    // Combines 2 objects
    public T combine(T o1, T o2);
}

public class BagOfOranges implements Combine<BagOfOranges> {
    private int quantity;

    public BagOfOranges(int quantity) {
        this.quantity = quantity;
    }

    public BagOfOranges combine(BagOfOranges b1, BagOfOranges b2) {
        return new BagOfOranges(b1.quantity + b2.quantity);
    }
}

答案 2 :(得分:1)

那只是一个界面。它没有描述实现。您需要创建一个implements Combine

的类
public Foo implements Combine {

    // snip...
    public Object combine(Object o1, Object o2) {
        // You need to implement this method.
    }
}

答案 3 :(得分:1)

试试这个:

public class Combineinator implements Combine
{
  public Object combine(
    final Object object1,
    final Object object2)
  {
    // implementation details left to the student.
  }
}

答案 4 :(得分:1)

public class MyCombiner implements Combine {
  public Object combine (Object o1, Object o2) { 
    //logic to combine the objects goes here (i.e. the hard part)
  }
}

换句话说,您需要实际编写代码来组合对象,然后将其放在如上所述的表单中。如果您需要关于组合两个特定对象的建议,您应该在另一个问题中提出这个问题。

答案 5 :(得分:1)

您的代码只是一个界面。您需要实现它以定义您的'组合对象'

一个简单的实现可能是这样的。

这里的CombinedObjs只需保持对象的引用需要组合。

public class CombinedObjs implements Combine {

    private Object Object1 = null;
    private Object Object2 = null;

    public Object combine(Object o1, Object o2){
        this.Object1 = o1;
        this.Object2 = o2;
        return this;
    }

    // You can provide setters to get the individual objects

    public Object getObject1(){
        return this.Object1;
    }
   public Object getObject2(){
        return this.Object2;
    }
}

答案 6 :(得分:0)

您无法创建Combine对象的实例,因为它是一个接口。你应该创建一个扩展Combine接口的类。