Klasse BasisWie die Instanz-Variable mit einem Wert innerhalb einer Methode der Superklasse in der Unterklasse Java
public class Base
{
public X obj;
public void setValue()
{
obj = new A();
}
}
public class Util extends Base
{
public X obj;
public Util(X obj)
{
this.obj = obj;
}
public void function1()
{
obj.m1(); //obj is null
}
public void function2()
{
obj.m2(); //obj is null
}
}
Testklasse
Util Klasse initialisiert zugreifen
class Test extends Base { // obj inherited from superclass is null. Util utilObj = new Util(obj) public void testMethod() { utilObj.function1(); utilObj.function2(); } }
Wie kann ich den initialisierten Wert im Konstruktor der util-Klasse übergeben, während ich sein Objekt innerhalb der Test-Klasse erstelle, so dass ich die Methode util class
verwenden kann. Es gibt eine Null-Zeiger-Ausnahme. Ich möchte nicht den Aufruf von setValue()
Methode in jedem Test class
und offenlegen kann nicht als statisch deklarieren. d. h. public static X obj;
in Base class
.
Gibt es eine Möglichkeit, den initialisierten Wert der nicht statischen Variable innerhalb jede Methode der Superklasse direkt in seiner Unterklasse wie statische Variable initialisiert zugreifen. Bitte helfen Sie dieses Problem zu lösen.
Verwenden Sie einen Konstruktor, der X als Parameter in der Basis –
verwendet. Ihre 'Util' -Klasse hat eine Variable namens' obj', die sich von der 'obj' -Variablen in' Base' unterscheidet. Ist das beabsichtigt? Oder willst du 'Util' nur die' obj' Variable in der 'Base' Klasse benutzen? – Wyzard
@Wyzard ich möchte nur obj Variable der Basisklasse in der Klasse util.Since ich muss das Obj von Test-Klasse übergeben, so habe ich Konstruktor in Util-Klasse, – user3598844