Generische Methoden mit Java und globale Variablen

MALPI

Mitglied
Hallo alle zusammen,

ich stehe gerade vor einem kleinem Problem. Wahrscheinlich ist die Lösung ziemlich simpel. Aber so recht komme ich gerade nicht drauf.

Ich habe eine Klasse die mehrere statische Methoden enthält. Diese Methoden greifen wiederrum auf mehrere statische Variablen zu, die global bekannt sein müssen.

Soweit so gut.

Die Methoden enthalten allerdings generische Argumente die nun wiederrum für die statischen Variablen benötigt werden.

Dies sieht in etwa so aus.

Java:
public class MyClass{
private static VarOne<gen1> var1;
private static VarTwo<gen2> var2;

public static <gen1,gen2>void  foo();
public static <gen1,gen2>void  bar();
}

Wie kann ich nun die generischen Argumente die erst über die statischen Methoden bekannt werden, an die Variablen weiterreichen?

Grüße,

MALPI
 

MALPI

Mitglied
Im endeffekt geht es darum, das ich mit Hilfe der Methode
Code:
foo()
die globalen Variablen initialisiere, diese wird innerhalb von
Code:
 bar()
aufgerufen. Eigentlich tut sie nichts anderes als ein Konstruktor.
 
S

SlaterB

Gast
soweit klar, aber angenommen es ginge, was würde dir das bringen,
wo verwendest du die Variablen, was stellst du dort damit an so dass der Typ wichtig ist,
wie willst du bei einer statischen Variablen den Typ unterscheiden?

das gibt es einfach komplett nicht, eine statische Variable kann nur String, Auto oder meinetwegen List<Integer> sein, aber nichts variables
 

Andi_CH

Top Contributor
Das ist C-Niveau oder gar Assembler ;-)
Wenn du das unbedingt willst deklariere deine Variablen als Object

Ich meine zu wissen, dass sich static und generisch ausschliessen oder irre ich mich? Ich lasse mich gerne aufklären.
 

MALPI

Mitglied
Das ist C-Niveau oder gar Assembler ;-)
Wenn du das unbedingt willst deklariere deine Variablen als Object

Ich meine zu wissen, dass sich static und generisch ausschliessen oder irre ich mich? Ich lasse mich gerne aufklären.

Ich lasse mich ebenfalls gerne aufklären ;).

Das Problem ist halt das die Variablen auch generische Parameter erwarten. Im Endeffekt stellt es kein Problem dar, da kompilier und ausführbar. Aber ich fänds halt "schöner" wenns dafür ne Lösung gäbe.

Grüße,

MALPI
 

Andi_CH

Top Contributor
Meine Frage war eigentlich an die gerichtet die es wissen müssten.

Wa du vorhast ist alles andere als schön um nicht zu sagen potthässlich.

So geht es und so ist es ursprünglich auch gedacht. So nebenbei - Variablennamen bitte mit Kleinbuchstaben beginnen.

Java:
public class Test<gen1, gen2> {

	private gen1 varOne;
	private gen2 varTwo;
	
	public void setOne(gen1 par) {
		varOne = par;
	}
	public void setTwo(gen2 par) {
		varTwo = par;
	}
	public gen1 getOne() {
		return varOne;
	}
	public gen2 getTwo() {
		return varTwo;
	}

	public static void main(String[] args) {
		Test<String, Integer> t1 = new Test<String, Integer>();
		t1.setOne("Hello World");
		t1.setTwo(1);
		System.out.println(t1.getOne());
		System.out.println(t1.getTwo());
	}
}
 

MALPI

Mitglied
Das, dass Ganze so funktioniert ist mir klar.

Vielleicht habe ich mich nicht konkret genug ausgedrückt, aber [c]VarOne, VarTwo[/code] sind keine Variablen sondern Typen.

Ich arbeite in dem Projekt mit mehreren typen von Knoten und Kanten. Diese spezifiziere ich über die generischen Parameter.

Diese müsste ich dann halt eben auch in den instantiierten Variablen der Klasse angeben.

In meinem ersten Post habe ich bei den Methoden leider einen Fehler gemacht. Die Methoden sollen natürlich ein Objekt zurückgeben.

Java:
public class MyClass{
private static VarOne<Gen1> var1;
private static VarTwo<Gen2> var2;
 
public static <Gen1,Gen2> Map<Gen1,Gen2> foo(Map<Gen1,Gen2> param);
public static <Gen1,Gen2> Map<Gen1,Gen2> bar(Map<Gen1,Gen2> param);
}

Momentan sieht es allerdings so aus:

Java:
public class MyClass{
private static VarOne var1;
private static VarTwo var2;
 
public static <Gen1,Gen2> Map<Gen1,Gen2> foo(Map<Gen1,Gen2> param);
public static <Gen1,Gen2> Map<Gen1,Gen2> bar(Map<Gen1,Gen2> param);
}

Dementsprechend bekomme ich für
Code:
var1, var2
Warnings. Was an sich nicht schlimm ist, aber unschön.

Grüße,

MALPI
 
S

SlaterB

Gast
man kann eine statische Variable List<String> anlegen, insofern schließen sich static und generisch streng genommen nicht gegenseitig aus ;) ,
dass man keine 'type variable' verwenden kann, ergibt sich ja mehr oder weniger schon durch Ausprobieren
A type variable is an unqualified identifier. Type variables are introduced by generic class declarations, generic interface declarations, generic method declarations, and by generic constructor declarations.
Generics in Java - Wikipedia, the free encyclopedia

----
edit: Posting von 9.49 noch nicht gesehen, das klärt das vielleicht schon

> Aber ich fänds halt "schöner" wenns dafür ne Lösung gäbe.

ohne nerven zu wollen: solange kein Problem erkennbar ist, ist besonders schwierig über eine Lösung nachzudenken,
dass es in Java nicht geht ist ein Punkt, ein anderer ist nach wie vor, dass es selbst theoretisch keinen Sinn ergibt,
genauso wie über den Benzinverbrauch eines Schreibtischs nachzudenken

edit: zum Posting von 9.49:
jetzt ist es bisschen verständlicher, wenn auch nicht ganz klar ist, inwiefern diese Variablen für die statischen Methoden benötigt werden,
da aber die Methoden offensichtlich mit wechselnden generischen Parametern aufgerufen werden,
hätte es auch in diesem Fall keinen Sinn, den Variablen einen bestimmten Typ zuzuordnen, auch keinen 'genauso wechselnden' oder was auch immer,

nur um die Warning wegzubekommen solltext du keine wirre sinnlose Syntax bemühen,
wenn die statischen Variablen in den statischen Methoden auf suspekte Weise mit wechselnden Typen verwendet werden, hättest du eher noch mehr Warnungen verdient ;)
gehen nicht lokale Variablen?
 
Zuletzt bearbeitet von einem Moderator:

MALPI

Mitglied
> Aber ich fänds halt "schöner" wenns dafür ne Lösung gäbe.

ohne nerven zu wollen: solange kein Problem erkennbar ist, ist besonders schwierig über eine Lösung nachzudenken,
dass es in Java nicht geht ist ein Punkt, ein anderer ist nach wie vor, dass es selbst theoretisch keinen Sinn ergibt,
genauso wie über den Benzinverbrauch eines Schreibtischs nachzudenken
Danke für den Lacher! :D

edit: zum Posting von 9.49:
jetzt ist es bisschen verständlicher, wenn auch nicht ganz klar ist, inwiefern diese Variablen für die statischen Methoden benötigt werden,
da aber die Methoden offensichtlich mit wechselnden generischen Parametern aufgerufen werden,
hätte es auch in diesem Fall keinen Sinn, den Variablen einen bestimmten Typ zuzuordnen, auch keinen 'genauso wechselnden' oder was auch immer,

nur um die Warning wegzubekommen solltext du keine wirre sinnlose Syntax bemühen,
wenn die statischen Variablen in den statischen Methoden auf suspekte Weise mit wechselnden Typen verwendet werden, hättest du eher noch mehr Warnungen verdient ;)
gehen nicht lokale Variablen?

Die generischen Variablen haben sozusagen alle einen Basistyp(Knoten und Kanten). Diese werden halt mit den erbenden Typen um bestimmte Eigenschaften und Methoden erweitert. Also an sich, ist der Typ nicht "wechselnd". Er wird nur erweitert.

Lokale Variablen würden gehen, wenn ich die Hilfsfunktionen alle in die "eigentliche statische" Methode verpacke. Dann wird der Code allerdings ziemlich unübersichtlich.

Ich denke ich werds einfach bei den Warnings belassen. Ich hatte halt gehofft, das es eine Syntaktische oder "Designtechnische" Lösung gibt.

Danke für die Antworten.

Grüße,

MALPI
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Generische Methoden Allgemeine Java-Themen 7
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
F Verständnisprobleme Aufgabenstellung Aktionsobjekte und generische Listen Allgemeine Java-Themen 1
J Generische Interface - Problem Allgemeine Java-Themen 3
J Generische Interfaces mehrfach einbinden Allgemeine Java-Themen 11
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
D generische Interface und konkrete Methode Allgemeine Java-Themen 3
T Interface mit generische Typen Allgemeine Java-Themen 5
A Methoden Generische Methode mit Arrays - Source Compatibility 1.7 benötigt, wieso? Allgemeine Java-Themen 3
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
H Interface Generische Schnittstelle (rekusiv) Allgemeine Java-Themen 2
C generische Authentifizierung Allgemeine Java-Themen 7
JCODA Generische Map Frage Allgemeine Java-Themen 10
H Generische Array Allgemeine Java-Themen 11
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
D Methode für generische enummap/enum Allgemeine Java-Themen 10
B Generische Datentypen MergeSort Allgemeine Java-Themen 5
M Generische Klassen Allgemeine Java-Themen 3
M generische Listener Allgemeine Java-Themen 2
S Generische Typen: Frage dazu Allgemeine Java-Themen 11
H generische Klasse Realtion Allgemeine Java-Themen 2
T Ideenfindung: Generische Transportklasse? Allgemeine Java-Themen 3
C Generische Methode (Schablone) Allgemeine Java-Themen 8
G generische Klasse als Parameter einer generischen Klasse Allgemeine Java-Themen 5
leifg Rechenoperationen auf generische Datentypen Allgemeine Java-Themen 10
B Generische Typen instanzieren Allgemeine Java-Themen 11
R Generische Listener und Sender Allgemeine Java-Themen 12
M Generische Datentypen Allgemeine Java-Themen 14
S Generische Liste Allgemeine Java-Themen 30
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
S Generische Methode Allgemeine Java-Themen 13
R Frage zu einfügen in generische lineare Liste Allgemeine Java-Themen 7
D Statische, generische Methode will nicht. Allgemeine Java-Themen 2
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
N abstracte klassen methoden Allgemeine Java-Themen 32
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
L mehrere Methoden Allgemeine Java-Themen 19
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
A Automatisches Methoden Laufzeiten logging? Allgemeine Java-Themen 7
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Q-bert Methoden Methoden in Java Allgemeine Java-Themen 13
D Methoden Java-Aufgabe Allgemeine Java-Themen 2
M Compiler-Fehler Methoden-Referenz Allgemeine Java-Themen 5
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
S 2 methoden mit gleichen namen und ein Interface Allgemeine Java-Themen 9
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
E OOP Objekte und Methoden Allgemeine Java-Themen 1
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
T Java Array in Methoden Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
A Methoden verändern Allgemeine Java-Themen 12
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
Paul15 String Methoden Allgemeine Java-Themen 7
G Methoden BMI -Wert Aufgabe(Methoden) Allgemeine Java-Themen 4
F Testen von Methoden Allgemeine Java-Themen 3
S "Vererben" statischer Felder/Methoden Allgemeine Java-Themen 4
F Methoden in der Enumeration Klasse Allgemeine Java-Themen 1
S Methoden ohne Methodenkopf ?! Allgemeine Java-Themen 5
T Überschreiben von Methoden Allgemeine Java-Themen 6
M Methoden werden in falscher Reihenfolge bearbeitet Allgemeine Java-Themen 10
S Methoden Methoden überschreiben Allgemeine Java-Themen 3
N Threads statische Methoden in Threads Allgemeine Java-Themen 5
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben