combineer 2 objecten in Java

Ik heb deze code gevonden bij een zoekopdracht op Google:

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

en ik zou graag twee objecten in de hoofdklasse willen combineren met de bovenstaande code. Hoe zou ik een Combine-object declareren om mijn doel te dienen?

1

7 antwoord

U zou een klasse maken die de Combine -interface implementeert, en openbare Object-combinatie (Object o1, Object o2) onderdrukken om te doen wat het in uw geval betekent om die twee parameters te combineren .

class Droplet implements Combine { 

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

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

    }

}

Kijk naar Marcelos voor een betere oplossing met behulp van generieke geneesmiddelen - hiermee kunt u de specifieke typen doorgeven waarin u bent geïnteresseerd, en niet alleen Object .

3
toegevoegd

Afhankelijk van de klasse, zou de logica van "combineren" veranderen. Allereerst moet de klasse de interface Combine implementeren en dan moet u de logica voor de methode combineren() programmeren, bijvoorbeeld:

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

public class BagOfOranges implements Combine {
    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
toegevoegd

Dat is slechts een interface. Het beschrijft geen implementatie. U moet een klasse maken die implementeert Combineren .

public Foo implements Combine {

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

De gegeven code is slechts een interface. U moet het implementeren om uw 'Gecombineerd object' te definiëren

Een eenvoudige implementatie zou zo kunnen zijn.

Hier de CombinedObjs houden gewoon de referentie van het object moet worden gecombineerd.

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
toegevoegd

Probeer dit:

public class Combineinator implements Combine
{
  public Object combine(
    final Object object1,
    final Object object2)
  {
   //implementation details left to the student.
  }
}
1
toegevoegd
public class MyCombiner implements Combine {
  public Object combine (Object o1, Object o2) { 
    //logic to combine the objects goes here (i.e. the hard part)
  }
}

Met andere woorden, je moet de code daadwerkelijk schrijven om de objecten te combineren en deze vervolgens in een vorm zoals hierboven plaatsen. Als je advies nodig hebt over het combineren van twee specifieke objecten, moet je dat in een aparte vraag stellen.

1
toegevoegd

U kunt geen instantie van het Combine-object maken omdat het een interface is. Maak een eigen klasse die de Combine-interface verlengt.

0
toegevoegd
Wat denk je van nieuwe ActionListener() {public void actionPerformed (ActionEvent e) {...}} ?
toegevoegd de auteur 11684, de bron