String in eine Typvariable umwandenln

Status
Nicht offen für weitere Antworten.

alexki

Mitglied
Hallo,

da man in Java Variablentypen nicht einfach in einem String zwischenspeichern kann, stoße ich zur zeit auf einige Probleme.

ein Beispiel das nicht Funktioniert:

Code:
String a = "int";
a integer1;


Ich wollte in einem Konstruktor einer Klasse, eine Variable erstellen lassen, die je nach Aufruf einen unterschiedlichen Klassentyp trägt.
 
geht nicht und macht auch keinen Sinn wenn es ginge
(ich sollte mir mal die Threads, in denen sowas alle paar Wochen ausgebreitet wird, merken 😉 )

naja, du hast ja einen etwas anderen Focus,
verwende Objekte statt primitive Typen

Object o = null;
// neuen Integer oder Long oder ... anlegen
 
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).
 
super wie schnell hier immer geantwortet wird!


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.
 
um ganz dynamsich zu werden gibts Reflection,
z.B.
Class.forName(name).newInstance();
und ähnliches

ist aber sehr fraglich, ob du so ein High-End-Konstrukt wirklich brauchst..
 
da programm moechte ich sehen, bei dem du diese volle Funktionalitaet anbietest...

was soll denn das Programm machen, wenn du keine Ahnung hast, ob da nun ein String oder ein int oder irgendein beliebiges Objekt kommt ?

also ich tippe mal auf - ueberleg dir dein Konzept nochmal - oder stells hier vor. Eine solche Loesung klingt meistens nicht sehr reif...
 
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!
 
Es gäbe noch die Möglichkeit es mit einem Interface oder, wenn du das nicht willst, auch mit Generics zu lösen.
 
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:

Interface: Comparable
 
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 :###
 
wenn du mit Comparable arbeitest bestimmst DU nach was sortiert werden soll... also kannst du nach allem humbug sortieren lassen.
 
Ein Beispiel zu Comparable und Generics


Code:
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) ;
 
hier ein Programmausschnitt:


Code:
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
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben