Interface List nicht als Collection an erkannt.

eclipseworker

Bekanntes Mitglied
Ich habe folgenden Construktor:
Java:
public A(String name, Collection<B> collB){
//...
}
Ich möchte auch diesen verwenden:
Java:
public A(String name, B[] arrB){
List<Feature> bal=Arrays.asList(arrB);
       PacketFeature(name, bal);
}
Aber Eclipse sagt mir, dass A(String, List) nicht definiert ist , warum eigentlich? Ich dachte eigentlich, dass List eine Erweiterung von Collection ist.
 

mrBrown

Super-Moderator
Mitarbeiter
Der gezeigte Konstruktor ist A(String, Collection<B>, die einzig aufgerufene Methode ist PacketFeature mit String, List<Feature>?


Ja, List erweitert Collection. Sind beide Interfaces passend importiert?
 

stg

Top Contributor
Das hier funktioniert jedenfalls:
Code:
public class Main {
  public static void main(String[] args) {
    new A<String>("Foo", new ArrayList<String>());
  }
}

public class A<B> {
  public A(String name, Collection<B> collB){ 
  }
}

...vielleicht beantwortet das ja schon deine Frage.
 

eclipseworker

Bekanntes Mitglied
Der gezeigte Konstruktor ist A(String, Collection<B>, die einzig aufgerufene Methode ist PacketFeature mit String, List<Feature>?


Ja, List erweitert Collection. Sind beide Interfaces passend importiert?
Stimmt ich habe es irgendwie verabsäumt meinen Code um zu ändern. PacketFeature=A und Feature=B. Der gesamt Code der Klasse PacketFeature sieht so aus (was das Interface und die Klasse SimpleFeature machen glaube ich kann man sich denken):
Java:
package aufgabe_2;

import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class PacketFeature implements Feature {
  
   private static final long serialVersionUID = 1L;
   private String name;
   private Set<Feature> subFeatures;
   private Map<SimpleFeature, Long> simpleFeatures;
   private Set<PacketFeature> subPacketFeatures;

   public PacketFeature(String name, Collection<Feature> subFeatures) throws Exception {
       this.name=name;
       this.subFeatures=new HashSet<>();
       this.subFeatures.addAll(subFeatures);
       this.simpleFeatures=new HashMap<>();
       this.subPacketFeatures=new HashSet<>();
       for(Feature s:subFeatures){
           if(this.equals(s)) continue;
           if(s.getKind()==FeatureKind.SIMPLE){
               simpleFeatures.put(((SimpleFeature) s), 1L);
           }else{
               for(SimpleFeature sf:((PacketFeature) s).getSimpleFeatures()){
                   simpleFeatures.put(sf, 1L);
               }
               subPacketFeatures.add(((PacketFeature) s));
           }
       }
   }
  
   public PacketFeature(String name, Feature[] subFeatures) throws Exception {
       List<Feature> sfal=Arrays.asList(subFeatures);
       PacketFeature(name, sfal);
   }
  
   public PacketFeature(String name){
       this.name=name;
       this.subFeatures=new HashSet<>();
       this.simpleFeatures=new HashMap<>();
       this.subPacketFeatures=new HashSet<>();
   }
  
  
   /* (non-Javadoc)
    * @see java.lang.Object#hashCode()
    */
   @Override
   public int hashCode() {
       final int prime = 31;
       int result = 1;
       result = prime * result + ((name == null) ? 0 : name.hashCode());
       return result;
   }

   /* (non-Javadoc)
    * @see java.lang.Object#equals(java.lang.Object)
    */
   @Override
   public boolean equals(Object obj) {
       if (this == obj) {
           return true;
       }
       if (obj == null) {
           return false;
       }
       if (!(obj instanceof PacketFeature)) {
           return false;
       }
       PacketFeature other = (PacketFeature) obj;
       if (name == null) {
           if (other.name != null) {
               return false;
           }
       } else if (!name.equals(other.name)) {
           return false;
       }
       return true;
   }
  

   public void addFeature(Feature fe) throws Exception{
       subFeatures.add(fe);
       if(fe.getKind()==FeatureKind.SIMPLE){
           SimpleFeature sf=((SimpleFeature) fe);
           if(!simpleFeatures.containsKey(sf)){
               simpleFeatures.put(sf, 1L);
           }
       }else{
           PacketFeature pf=((PacketFeature) fe);
           if(this.equals(pf)) throw new Exception("can't be my own subfeature.");
           for(SimpleFeature sf:pf.getSimpleFeatures()){
               if(simpleFeatures.containsKey(sf)){
                   simpleFeatures.put(sf, simpleFeatures.get(sf)+1);
               }else{
                   simpleFeatures.put(sf, 1L);
               }
           }
           subPacketFeatures.add(pf);
       }
   }
  
   /* (non-Javadoc)
    * @see java.lang.Object#toString()
    */
   @Override
   public String toString() {
       StringBuilder builder = new StringBuilder();
       builder.append("PacketFeature [");
       if (name != null) {
           builder.append("name=");
           builder.append(name);
           builder.append(", ");
       }
       if (subFeatures != null) {
           builder.append("subFeatures=");
           builder.append(subFeatures);
           builder.append(", ");
       }
       if (simpleFeatures != null) {
           builder.append("simpleFeatures=");
           builder.append(simpleFeatures);
           builder.append(", ");
       }
       if (subPacketFeatures != null) {
           builder.append("subPacketFeatures=");
           builder.append(subPacketFeatures);
           builder.append(", ");
       }
       builder.append("getPrice()=");
       builder.append(getPrice());
       builder.append("]");
       return builder.toString();
   }

   public void addMultipleFeatures(Collection<Feature> featureCollection) throws Exception{
       for(Feature fe:featureCollection){
           addFeature(fe);
       }
   }
  

   public void addMultipleFeatures(Feature[] featureArray) throws Exception{
       addMultipleFeatures(Arrays.asList(featureArray));
   }
   /**
    * @return the serialversionuid
    */
   public static long getSerialversionuid() {
       return serialVersionUID;
   }

   /**
    * @return the subFeatures
    */
   public Set<Feature> getSubFeatures() {
       return subFeatures;
   }

   /**
    * @return the simpleFeatures
    */
   public Set<SimpleFeature> getSimpleFeatures() {
       return simpleFeatures.keySet();
   }
  
   public Map<SimpleFeature, Long> getSimpleFeaturesCounted(){
       return simpleFeatures;
   }
  
   public void removeFeature(Feature rf){
       if(rf.getKind()==FeatureKind.SIMPLE){
           SimpleFeature sf=((SimpleFeature) rf);
           if(simpleFeatures.containsKey(sf)){
               if(simpleFeatures.get(sf)>1){
                   simpleFeatures.put(sf, simpleFeatures.get(sf)-1);
               }else{
                   simpleFeatures.remove(sf);
                   subFeatures.remove(sf);
               }
           }
       }else{
           PacketFeature pf=((PacketFeature) rf);
           subFeatures.remove(pf);
           for(SimpleFeature scpf:pf.getSimpleFeatures()){
               if(simpleFeatures.containsKey(scpf)){
                   if(simpleFeatures.get(scpf)>1){
                       simpleFeatures.put(scpf, simpleFeatures.get(scpf)-1);
                   }else{
                       simpleFeatures.remove(scpf);
                       subFeatures.remove(scpf);
                   }
               }
           }
       }
   }
  
   public void removeMultipleFeatures(Collection<Feature> featureCollection) {
       for(Feature fe:featureCollection){
           removeFeature(fe);
       }
   }
  
   public void removeMultipleFeatures(Feature[] featureArray) {
       removeMultipleFeatures(Arrays.asList(featureArray));
   }
  

   /**
    * @param name the name to set
    */
   public void setName(String name) {
       this.name = name;
   }

   @Override
   public int compareTo(Feature o) {
       return new Long(this.getPrice()).compareTo(o.getPrice());
   }

   @Override
   public String getName() {
       return name;
   }

   /**
    * @return the subPacketFeatures
    */
   public Set<PacketFeature> getSubPacketFeatures() {
       return subPacketFeatures;
   }

   @Override
   public long getPrice() {
       long price=0;
       for(SimpleFeature sf:getSimpleFeatures()){
           price+=sf.getPrice();
       }
       return price;
   }

   @Override
   public FeatureKind getKind() {
       return FeatureKind.COMPOSED;
   }
  

}
Mich wunderts halt um so mehr da addMultipleFeatures(Feature[] featureArray) throws Exception und removeMultipleFeatures(Feature[] featureArray) akzeptiert werden.
 

eclipseworker

Bekanntes Mitglied
Um mich einfach mal selbst zu zitieren....
Ok das hier das MCV:
Java:
import java.util.*;

public class A {
 
    private String name;
    private Set<String> subFeatures;

    public A(String name, Collection<String> strs) {
        this.name=name;
        this.subFeatures=new HashSet<>();
        this.subFeatures.addAll(strs);
    }
  
    public A(String name, String[] strs) throws Exception {
        List<String> sfal=Arrays.asList(strs);
        A(name, sfal);
    }
}
 

mihe7

Top Contributor
Schon. Im new-Fall erzeugst Du während der Initialisierung des aktuellen Objekts (this) ein neues Objekt (new A(...)). Im this-Fall initialisierst Du das aktuelle Objekt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
S Methoden Linked List Methoden können nicht aufgerufen werden Java Basics - Anfänger-Themen 1
U JAXB - List wird nicht ausgefüllt Java Basics - Anfänger-Themen 1
H contains (für LIST) funktioniert nicht - ich weiß nicht warum? Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
J Array.list vergleichen Java Basics - Anfänger-Themen 1
B Vektor vs List Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
T Linked List set-Methode Java Basics - Anfänger-Themen 2
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
L Datentypen Array List Java Basics - Anfänger-Themen 9
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
O Collections.sort und List.sort mit Lambda Verwirrung Java Basics - Anfänger-Themen 5
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
G Linked list, Methode zum Vertauschen von Elementen Java Basics - Anfänger-Themen 14
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
W Stream Array List - Frage Java Basics - Anfänger-Themen 5
X Array List geordnet ausgeben. (JSF und JAVA) Java Basics - Anfänger-Themen 1
D new arraylist (List) dynamisch erstellen Java Basics - Anfänger-Themen 1
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
M List<String> auswählen Java Basics - Anfänger-Themen 42
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
T HashSet in List-Object Java Basics - Anfänger-Themen 5
B ENUM to List<String> konvertieren Java Basics - Anfänger-Themen 2
E Array-list mit einer bestimmten Länge Java Basics - Anfänger-Themen 17
B Sorting List und Remove Java Basics - Anfänger-Themen 2
B String: suche nach Wörter und in List<String> speichern Java Basics - Anfänger-Themen 3
M Methode überladen - Array List Java Basics - Anfänger-Themen 5
L LIST.ADD Java Basics - Anfänger-Themen 2
M XWPF - Bullet Point list erstellen Java Basics - Anfänger-Themen 1
I <List> sortieren Java Basics - Anfänger-Themen 2
N Klassen List-Art Java Basics - Anfänger-Themen 5
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
Salo Datentypen "Doppelt" List(e) ("gesucht") Java Basics - Anfänger-Themen 6
F .csv Export aus einer list Java Basics - Anfänger-Themen 25
T KlausurÜbung- Förderband-Linked List Java Basics - Anfänger-Themen 53
D Komischer Fehler nach <Integer> List Java Basics - Anfänger-Themen 2
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
T List und ArrayList Java Basics - Anfänger-Themen 3
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
T Datentypen InputStream to list of Int (or similar) Java Basics - Anfänger-Themen 4
D Input/Output CSV Parser list unvollständig Java Basics - Anfänger-Themen 25
V Erste Schritte Dateinamen aus einer FIle[] in eine List Java Basics - Anfänger-Themen 11
L Linked List - Array List Java Basics - Anfänger-Themen 2
J Einfach verkettet List: Ausgabe ohne null Java Basics - Anfänger-Themen 11
D Bestimmten Wert aus Array List ausgeben Java Basics - Anfänger-Themen 7
V Personenverwaltung mit List<>, falsche Ausgaben Java Basics - Anfänger-Themen 5
M List befüllen Java Basics - Anfänger-Themen 3
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
P Anlegen und Abfragen von Array List Java Basics - Anfänger-Themen 4
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
A Wie nutze ich List<List<String>> Java Basics - Anfänger-Themen 4
M Endlos schleife in List Java Basics - Anfänger-Themen 5
P Zufallszahlen ohne zahlen einer List Java Basics - Anfänger-Themen 21
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
S Probleme bei Ausgabe von rekursiver Methode (List) Java Basics - Anfänger-Themen 16
T Tabstopp in AWT-List? Java Basics - Anfänger-Themen 8
P Doppelte Einträge in eine List Java Basics - Anfänger-Themen 5
M Wozu Upcasting? Am Beispiel List = ArrayList Java Basics - Anfänger-Themen 2
A List mit integern füllen Java Basics - Anfänger-Themen 4
D sortieren von List<> Java Basics - Anfänger-Themen 2
B List - Drag&Drop Java Basics - Anfänger-Themen 8
SexyPenny90 Implementierung einer doubly linked list Java Basics - Anfänger-Themen 5
G Linked List Programm add Problem Java Basics - Anfänger-Themen 5
C List Abfragenproblem Java Basics - Anfänger-Themen 3
J List als anonyme Klasse Java Basics - Anfänger-Themen 9
H Collections List in List<SpecificType> als stat. generische Methode zurückgeben Java Basics - Anfänger-Themen 4
F Wozu braucht man array list? Java Basics - Anfänger-Themen 29
T Collections Wie funktioniert List() ? Java Basics - Anfänger-Themen 7
Kenan89 Java Date List Java Basics - Anfänger-Themen 4
tux20 Problem beim Schreiben von List to File Java Basics - Anfänger-Themen 2
K Frage Set List Java Basics - Anfänger-Themen 3
M Array List ausgeben Java Basics - Anfänger-Themen 13
C Typen aus List<Object[]> ändern Java Basics - Anfänger-Themen 7
S Gute List Implementation Java Basics - Anfänger-Themen 5
S Synchronisieren einer Linked List Java Basics - Anfänger-Themen 16
A List Array - wie instanzieren Java Basics - Anfänger-Themen 7
T List mit mehreren gleichen Strings bereinigen Java Basics - Anfänger-Themen 4
R List to BinaryTree Java Basics - Anfänger-Themen 13
P Set mit List vergleichen Java Basics - Anfänger-Themen 8
Binary.Coder List bzw. ArrayList als String ausgeben Java Basics - Anfänger-Themen 2
J Datentypen List - gleiche Einträge bei neuen Objekten Java Basics - Anfänger-Themen 31
T List.add(Object) führt zu NullPointerException Java Basics - Anfänger-Themen 14
M Collections Cast bei ArrayList (List) Java Basics - Anfänger-Themen 2
B List list - anstatt ArrayList list = new ArrayList Java Basics - Anfänger-Themen 10
H Remove Methode von List Java Basics - Anfänger-Themen 6
T Datentypen List<?> Java Basics - Anfänger-Themen 5
E Linked List generisch Java Basics - Anfänger-Themen 5
S Einen neuen String ohne Array oder List erzeugen??? Java Basics - Anfänger-Themen 13
S List angaben in textfelder Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben