Asyraf Patt Ответов: 2

JAVA: как показать вывод в другом классе с помощью getter/setter


Исходя из этого вопроса, я хочу, чтобы вывод был показан на основе второго метода, используемого с помощью геттера. но показанная ошибка : нулевой указатель.

Примечание: Я уже пробую это сделать, используя переменную "Static" in.

Итак, есть ли другой способ вызвать геттер без использования "статического" ?

значит, в этой нижеприведенной части метода :
public void secondMethod_getTheName(){
System.out.println("Name: "+theModel.getName());}


Что я уже пробовал:

класс моделей
package com.SetterAndGetter;

public class model {

	private  int id;
	private  String name;
	private  int Age;

	public  int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public  String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public  int getAge() {
		return Age;
	}

	public void setAge(int age) {
		Age = age;
	}

	@Override
	public String toString() {
		return "model [id=" + id + ", name=" + name + ", Age=" + Age + "]";
	}

}


метод mymethod класса
package com.SetterAndGetter;

public class myMethod {

	public model theModel;

	public void setTheName() {
		String name = "mike";

		theModel = new model();
		theModel.setName(name);
	}

	public void getTheName() {

		System.out.println("The name is: " + theModel.getName());
	}

}


основной класс
package com.SetterAndGetter;


public class mainApp {
	private model theModel;


	public void secondMethod_getTheName() {

		System.out.println("Name: "+theModel.getName());


	}

	public static void main(String[] args) {

		myMethod obj1 = new myMethod();
		obj1.setTheName();
		obj1.getTheName();

		mainApp obj2 = new mainApp();
		obj2.secondMethod_getTheName();

	}
}

2 Ответов

Рейтинг:
11

Asyraf Patt

Первое Решение

Метод mymethod класса

package com.SetterAndGetter;

public class myMethod {

	public model theModel;

	public static  String theName;

	public void setTheName(String tempName) {
		theName = "john";
		tempName = theName;


		theModel = new model();
		theModel.setName(theName);
	}

	public void getTheName() {

		System.out.println("The name is: " + theModel.getName());

	}

}


класс моделей
package com.SetterAndGetter;

public class model {

	private int id;
	private  String name;
	private  int Age;



	public  int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public  String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public  int getAge() {
		return Age;
	}

	public void setAge(int age) {
		Age = age;
	}

	@Override
	public String toString() {
		return "model [id=" + id + ", name=" + name + ", Age=" + Age + "]";
	}

}


основной метод
package com.SetterAndGetter;

public class mainApp {
	private myMethod mm;

	public void secondMethod_getTheName() {

		System.out.println("the second method: "+myMethod.theName);

	}

	public static void main(String[] args) {

		myMethod obj1 = new myMethod();
		obj1.setTheName(null);
		obj1.getTheName();

		mainApp obj2 = new mainApp();
		obj2.secondMethod_getTheName();


	}
}


Второе Решение
с помощью наследование

мой класс методов
package com.SetterAndGetter;

public class myMethod {

	/**
	 * Create new object of the model Class
	 */
	public static model Model = new model();

	private String tempName;

	public myMethod() {
	}

	public myMethod(String stempName) {

		// reference the variable as tempName == stempName
		this.tempName = stempName;

		//define value of stempName as mike
		stempName = "mike";

		//Set the name
		Model.setName(stempName);


	}

	public void dispMethod(){

		System.out.println("Use Getter: "+Model.getName());
	}

}


класс второго метода
package com.SetterAndGetter;

/**
 * Created by Asyraf-PC on 3/28/2018.
 */

public class mySecondMethod extends myMethod {


    public void secondMethodDisplay() {

        System.out.println("Use Second Getter: "+Model.getName());

    }
}


модель
package com.SetterAndGetter;

public class model {

	private int id;
	private  String name;
	private  int Age;



	public  int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public  String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public  int getAge() {
		return Age;
	}

	public void setAge(int age) {
		Age = age;
	}

	@Override
	public String toString() {
		return "model [id=" + id + ", name=" + name + ", Age=" + Age + "]";
	}

}


главное приложение

package com.SetterAndGetter;

public class mainApp {


	public static void main(String[] args) {

	myMethod obj = new myMethod("");
	obj.dispMethod();

	mySecondMethod obj2 = new mySecondMethod();
	obj2.secondMethodDisplay();


	}
}


Рейтинг:
0

CPallini

Цитата:
Системы.из.код println("имя: "+модели.метод getname());

Вы используете объект, не создав его экземпляр. Вы должны создать объект (и установить его имя), например
mainApp obj2 = new mainApp();
obj2.theModel = new model();
obj2.theModel.setName("foo");
obj2.secondMethod_getTheName();


Asyraf Patt

общественного недействительными secondMethod_getTheName() {

Системы.из.код println("имя: "+модели.метод getname());
}

Как мне напечатать Майка, используя тот же геттер ?

CPallini

Ты не можешь. Вы должны создать экземпляр myMethod (как вы уже сделали), чтобы получить его (в качестве альтернативы вы можете заменить "foo" на "mike" в моем коде).
Ваш класс модели почти в порядке (на мой взгляд, ему не хватает правильного ctor), но, похоже, вы не знаете, как получить к нему доступ.

Maciej Los

5ed!

CPallini

Большое спасибо.