Wieso übergibst du dem Konstruktor nicht einfach eine Property?
Hier in etwa so:
Code:
public class Test
{
public Test(String property)
{
if (property.equals("int")
{
int a =0;
}
if(property.equls("String")
{
String s = "TestString";
}
.
.
.
}
}
Anders lässt es sich meine ich nicht realisieren (falls dies deinen Vorstellungen entspricht).
Jedoch ist mein problem nicht ganz gelöst, was aber wie ihr es sagt so nicht geht.
Da in der Klasse "Test" ja bereits vorher alle möglichen "properties" eingetragen sein müssen die vorkommen können.
Und da ich das ganze mit Klassen als Variablentypen vor hatte, kann man nicht wissen welche Klassen immer dazu kommen.
Die Klasse soll Objekte sortieren, ohne vorher zu wissen, um welche Objekte es sich handeln wird.
Deshalb suche ich eine Möglichkeit, dass das Objekt was sortiert werden will, der Klasse (die es sortiert) ihren Variablen-/Klassentyp mitteilt.
Aber das mit Reflections hört sich gut an, ich gucke es mir sofort an, Danke!
Dieses Problem muß man mit einem Interface lösen, Da ansonsten nicht sichergestellt werden kann, ob diese Objekte überhaupt mit einander verglichen werden können. :meld:
siehe jPats sache... Man kann NICHT jedes beliebige Objekt sortieren lassen - nur die, die das Interface Comparable implementieren.
D.h. du musst nicht viel machen, einfach alles was kommt (wie auch immer), als Comparable betrachten (und fehler beachten wenn es die Klasse nicht kann)
ansonsten - Objekte in Liste oder Array packen und von java sortieren lassen...
So mit Interfaces hat das nun endlich geklappt, Danke an alle!
Die einzige Einschränkung die ich hinnehme muss, ist dass nur relativ gleiche Attribute der Klassen (z.B. Personename und Automarke) sortiert werden können, also die in dem Interface definiert sind.
Dadurch kann man die Objekte nicht nach Ihren "Spezialgebieten" sortieren .
Naja ich bin auf jeden Fall weiter als vorher und habe einiges dazu gelernt :###
class Auto implements Comparable{
private String marke;
public int compareTo(Object o){
// hier kann man nun entscheiden, was passieren soll.
Auto c = (Auto) o;
return c.marke.comareTo(marke);
}
}
Nun eine andere Klasse: beliebige Klassen sortieren in einem Array (Nur mit Comparable bzw. compareTo(Object o )) :
Code:
class MeinSort {
public <T extends Comparable> void sort (T[] array){
// hier sortieralgorithmus implementieren!!
// zb array[i].compareTo(array[j]);
}
}
Nun wird jedes Array, was Objecte beinhaltet, die das Interface Comparable implementieren, sortiert. (Die sortierfunktion mußt du dir aber noch ausdenken :wink: )
MeinSort sort = new MeinSort(); sort.sort(irgendeinArray) ;
public interface AlleObjekte {
public String getInterfaceName();
public int getInterfaceJahr();
public int compare( AlleObjekte p_objekt );
}
In jeder Klasse:
Code:
public int compare( AlleObjekte p_objekt ){
return this.getName().compareTo(p_objekt.getInterfaceName());
//Vergleicht sich selbst mit einem übergebenen Objekt
}
Eine Klasse die Liste heisst, speichert in einem Array alle Objekte, also in "AlleObjekte[]"
Da ich an die Methode compare nur das Objekt aus "AlleObjekte" übergeben kann(also nicht die komplette Struktur von z.B. der Klasse Personen), kann ich das Objekt auch nur mit den Attributen vergleichen die auch in dem Interface definiert sind.
ich hoffe das ist halbwegs verständlich, wieso ich nicht alles mit allem vergleichen kann