Call By reference (Null pointer exception)

badhan

Mitglied
Hallo leute,
Ich mochte eine statische methode(von andere klasse) verwenden, um eine Objekt zu erzeugen, und das referenz von diesem Objekt möchte ich an die Hauptklasse haben.

bei diese unterstehende Code habe ich immer nullpointer exception.
[Java]
public class Main {
static TestUser user = null;
public static void main(String argv[])
{
TestClass.makeUser(user);
System.out.println(user.getA());
}
}

public class TestClass {

public static void makeUser(TestUser user)
{
user = new TestUser(20,10);
}
}
public class TestUser
{
private int a;
private int b;
public TestUser(int a , int b)
{
this.a = a;
this.b = b;
}

int getA() {return a;}
int getB() {return b;}
}
[/code]

Bitte um Tipps! Danke (sry fuer mein schlechte sprache)
 

darekkay

Bekanntes Mitglied
Da es eine nullpointerexception ist, und du ein Objekt selbst auf null setzt, dann müsste dir der Fehler auch schnell auffallen ;)

static TestUser user = null;
...
TestClass.makeUser(user); <- hier ist user = null => nullpointerexception

Du müsstest oben schon einen TestUser erzeugen:
Java:
static TestUser user = new TestUser(20,20);
 

Final_Striker

Top Contributor
versuche es mal so:
[Java]
public class Main {
static TestUser user = null;
public static void main(String argv[])
{
user = TestClass.makeUser();
System.out.println(user.getA());
}
}

public class TestClass {

public static TestUser makeUser()
{
return new TestUser(20,10);
}
}
public class TestUser
{
private int a;
private int b;
public TestUser(int a , int b)
{
this.a = a;
this.b = b;
}

int getA() {return a;}
int getB() {return b;}
}
[/code]
 

badhan

Mitglied
Diese Direkte zuweisung ist mir schon klar. Aber wir könnte ich es demonstrieren dass dieses Object(TestUser) über die hilfsklasse TestClass erzeugt wird, und das referenz immer noch in "Main" class habe. (als Funktions parameter, nicht als rückgabe wert)
 

badhan

Mitglied
Danke darekkay und Final_Striker.

Das letzte Code habe ich ausprobiert. Funktioniert wunderbar.

Aber kann man das nicht mit Funktionsparameter(bzw. methoden Parameter) lösen. In c++ geht ja:)
 

Antoras

Top Contributor
In Java gibt es kein Call-by-Reference. Siehe mehr dazu hier. Stattdessen gibt es Reflection:
Java:
public class Main {
	public static void main(final String... args) throws InstantiationException, IllegalAccessException {
		final TestUser t = TestClass.mkUser(TestUser.class);
		final GodUser g = TestClass.mkUser(GodUser.class);
		System.out.println(t);
		System.out.println(g);
	}
}

class TestClass {
	static <T extends User> T mkUser(final Class<T> c) throws InstantiationException, IllegalAccessException {
		return c.newInstance();
	}
}

interface User {}

class TestUser implements User {
	@Override
	public String toString() {
		return "TestUser";
	}
}

class GodUser implements User {
	@Override
	public String toString() {
		return "GodUser";
	}
}
Wenn du Objekte dynamisch zur Laufzeit erstellen möchtest, dann kann das mit Reflection allerdings schnell frickelig werden. Wenn dir das aber sehr wichtig ist, empfehle ich, ein Dependency Injection Framework wie Guice zu verwenden.
 

badhan

Mitglied
Besten Dank.
Genau soetwas habe ich auch gesucht, versucht... zwar nicht geschafft gehabt.
Das ist das richtige beweis dass Java kein Call by Reference kennt. Es scheint sehr oft so dass es doch Call by reference gibt, doch die lokale Objekte(Parameterisierte Objekte) machen eine kopie und referenzieren auch auf das originale Objekt(funktiniert eben nur dann wenn es schon das Objekt vorher dynamisch erzeugt wurde).
Somit kann man die Originale Objekt manupulieren.

DANKE :)

ps: arbeite mit Java seit paar tage:)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java call by Value oder Reference Java Basics - Anfänger-Themen 35
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
H call by reference & value Java Basics - Anfänger-Themen 14
B Call by Value/Reference Java Basics - Anfänger-Themen 4
Joew0815 Methoden Objekt als Methoden-Parameter - Kein call-by-reference? Java Basics - Anfänger-Themen 12
T Array prozedur, call by reference ? Java Basics - Anfänger-Themen 6
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
S call by reference? Java Basics - Anfänger-Themen 52
F Verständisproblem bzgl. nicht Vorhandensein von Call-by-reference Java Basics - Anfänger-Themen 2
C Call by reference Java Basics - Anfänger-Themen 11
W call-by-reference-Effekt bei Objekten Java Basics - Anfänger-Themen 3
S "Call by Reference" Java Basics - Anfänger-Themen 12
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S call by reference Java Basics - Anfänger-Themen 7
F Wie kann ich call by reference umgehen? Java Basics - Anfänger-Themen 14
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
F Call-By-Reference umgehen Java Basics - Anfänger-Themen 4
B Call by Reference Java Basics - Anfänger-Themen 7
S call by reference vs. call by value - pls help Java Basics - Anfänger-Themen 7
K Eigene Annotations, Pre-/Post-/Call-Method Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
R Call By Referene? Java Basics - Anfänger-Themen 10
N Methode erfüllt nicht den zweck (Call by value) Java Basics - Anfänger-Themen 17
0 Call by value Java Basics - Anfänger-Themen 3
J Call by ... Java Basics - Anfänger-Themen 16
F java call jython Java Basics - Anfänger-Themen 7
C Unchecked Call? Wie Warnung beseitigen? Java Basics - Anfänger-Themen 3
I call to super must be first statement in constructor Java Basics - Anfänger-Themen 3
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
T Boolean by Reference Java Basics - Anfänger-Themen 6
T Schleifenindex "by reference" / "by value" Java Basics - Anfänger-Themen 13
O Socket by reference übergeben Java Basics - Anfänger-Themen 0
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
O Illegal Group Reference Java Basics - Anfänger-Themen 4
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
K Variablen Cannot make a static reference to the non-static field time Java Basics - Anfänger-Themen 6
P Compiler-Fehler Cannot make a static reference to the non-static field process Java Basics - Anfänger-Themen 3
C Reference - wird gegen meinen Willen - auf null gesetzt Java Basics - Anfänger-Themen 2
F Mal wieder: Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 9
F Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 3
M Reference Java Basics - Anfänger-Themen 2
B Cannot make a static reference...?? Java Basics - Anfänger-Themen 5
B Mal wieder "cannot make a static reference..." Java Basics - Anfänger-Themen 2
N Reference to non-static method Java Basics - Anfänger-Themen 8
C Passing Reference by Value Java Basics - Anfänger-Themen 4
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
R Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 5
L [Gelöst] Cannot make a static reference ... Java Basics - Anfänger-Themen 12
N Connot make a static reference. deklarierungsfehler Java Basics - Anfänger-Themen 10
T object reference counts Java Basics - Anfänger-Themen 14
T Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 8
frau-u Altes Problem: non-static method cannot be reference Java Basics - Anfänger-Themen 7
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
P Buffer und null Java Basics - Anfänger-Themen 3
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
jakobfritzz Array- cannot invoke "" because "" is null Java Basics - Anfänger-Themen 4
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
N null in String replacen Java Basics - Anfänger-Themen 16
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
K Bufread.readLine())!= null wie beenden? Java Basics - Anfänger-Themen 4
C Variablen Provided text for message may not be null Java Basics - Anfänger-Themen 9
T ComboBox getValue() zeigt null Java Basics - Anfänger-Themen 7
J null exception Array Java Basics - Anfänger-Themen 5
tobikoch String x= null Bedeutung Java Basics - Anfänger-Themen 9
C NumberFormatException: null ohne Ausnahmebehandlung stoppen Java Basics - Anfänger-Themen 7
J Int wird als Null ausgegeben Java Basics - Anfänger-Themen 8
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
C Array-Eintrag wieder auf Null setzen Java Basics - Anfänger-Themen 3
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
M jTable bekommt null Java Basics - Anfänger-Themen 1
B MySQL (jdbc) -> connection liefert NULL Java Basics - Anfänger-Themen 3
der_Schokomuffin Hilfe gesucht: String wird auf null gesetzt! Java Basics - Anfänger-Themen 17
L Warum ist Variable null? Java Basics - Anfänger-Themen 3
J javax.servlet.ServletException: Name is null Java Basics - Anfänger-Themen 7
B if(object== null) abkürzen? Java Basics - Anfänger-Themen 6
O JavaArray Null Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
D Best Practice Konvention - Klassenmembers auf null setzen? Java Basics - Anfänger-Themen 2
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
Orkanson Null Pointer Expception Java Basics - Anfänger-Themen 3
M set Integer bzw. set null mit SQL DB Java Basics - Anfänger-Themen 9
I Polymorphie Null Objekt Java Basics - Anfänger-Themen 3
O Datentypen Integer mit führender Null Java Basics - Anfänger-Themen 13
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
J Einfache Frage zu "null" Java Basics - Anfänger-Themen 2
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
P Operatoren Parameter nicht auf null geprüft? Java Basics - Anfänger-Themen 16
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
C Null Pointer Exception Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben