объединить 2 объекта в Java - PullRequest
1 голос
/ 06 декабря 2011

Я нашел этот код при поиске в Google:

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

и я хотел бы объединить два объекта в основном классе, используя приведенный выше код. Как мне объявить объект Combine, чтобы он служил моей цели?

Ответы [ 7 ]

3 голосов
/ 06 декабря 2011

В зависимости от класса логика «объединения» будет меняться.Прежде всего, класс должен реализовать интерфейс 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);
    }
}
3 голосов
/ 06 декабря 2011

Вы должны создать класс, который реализует интерфейс 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 голос
/ 06 декабря 2011

Ваш код является просто интерфейсом.Вы должны реализовать его, чтобы определить свой «Комбинированный объект»

. Простая реализация может быть такой.

Здесь 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;
    }
}
1 голос
/ 06 декабря 2011
public class MyCombiner implements Combine {
  public Object combine (Object o1, Object o2) { 
    //logic to combine the objects goes here (i.e. the hard part)
  }
}

Другими словами, вам нужно написать код для объединения объектов, а затем поместить его в форму, подобную приведенной выше. Если вам нужен совет по объединению двух конкретных объектов, вы должны задать его в отдельном вопросе.

1 голос
/ 06 декабря 2011

Попробуйте это:

public class Combineinator implements Combine
{
  public Object combine(
    final Object object1,
    final Object object2)
  {
    // implementation details left to the student.
  }
}
1 голос
/ 06 декабря 2011

Это просто интерфейс.Это не описывает реализацию.Вам нужно создать класс, который implements Combine.

public Foo implements Combine {

    // snip...
    public Object combine(Object o1, Object o2) {
        // You need to implement this method.
    }
}
0 голосов
/ 06 декабря 2011

Вы не можете создать экземпляр объекта Combine, поскольку он является интерфейсом.Вы должны создать свой собственный класс, который расширяет интерфейс Combine.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...