Подскажите, как грамотно реализовать передачу данных между классами.
В классе А есть переменная, также для этой переменной есть get и set, именно в этом классе нужно установить переменной variable значение 5.
class A {
int variable;
public A() {
setVariable(5);
}
public void setVariable(int variable) {
this.variable = variable;
}
public int getVariable() {
return variable;
}
}
Далее, есть класс В, в котором есть метод returnVariable где нужно получить значение переменной variable и вывести на экран.
class B {
void returnVariable() {
A a = new A();
System.out.println(a.getVariable());
}
}
Я знаю что при new A(); создается новая ячейка в памяти, и getVariable() как бы равен 0 или null. Но есть я устанавливаю int static variable; то результат выводит: 5. Скажите, как можно обойтись без статических полей в данном случае?
Чтобы реализовать передачу данных между классами, вам нужно передать ссылку на первый класс второму. Вы это можете сделать в конструкторе класса B. То есть создать конструктор с параметрами, в которых передается ссылка.
public B(A a){
public B(A a){
System.out.println(a.getVariable());
}
}
Вы также можете создать конструктор с параметрами у класса A. Для того, чтобы сразу, при создании класса устанавливать переменной новое значение. Вот пример кода, который я для вас написал. Класс A:
package setVarClass;
/**
*
* @author vvm
*/
public class A {
int variable;
public A() {
setVariable(5);
}
// конструктор с параметрами
public A(int var){
this.variable = var;
}
public void setVariable(int variable) {
this.variable = variable;
}
public int getVariable() {
return variable;
}
}
Класс B:
package setVarClass;
/**
*
* @author vvm
*/
public class B {
public B(){}
public B(A a){
System.out.println(a.getVariable());
}
void returnVariable() {
A a = new A(); // тут создается экземпляр класса A
System.out.println(a.getVariable());
}
}
Класс для тестирования:
package setVarClass;
/**
*
* @author vvm
*/
public class TestVarInClass {
public static void main(String[] args) {
// можно не создавать A потому как А создается в конструкторе B();
// A a= new A();// тут вызываем конструктор без праметром
// и переменной присваивается хначение по умолчанию = 5
B b = new B();
b.returnVariable(); // выводит значение переменной
A acon = new A(80);
B b1 = new B(acon);// тут выведет 80
}
}
Строка A a = new A(); // тут создается экземпляр класса A
в методе класса void returnVariable()
лишняя. Теперь вы можете обойтись без неё. Но в этом случае
вы должны передать ссылку на класс в методе returnVariable(),
как я это сделал в конструкторе.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости