Как передать значение переменной из одного класса в другой?
Есть 2 класса: А и B. Необходимо значение переменной из класса А передать в класс B.
Эта переменная в классе А - в виде xpath. Т.е. мы ее получаем на странице класса A и если будем пытаться получить заново в классе B - возникнет ошибка (элемент не будет найден).
Подскажите пожалуйста, как можно передать значение уже полученное в классе А, без повторного запроса на получение элемента в классе B?
Попробовал, к сожалению не вышло.
При запуске тест все еще пытается заново запросить переменную на странице B, а не просто получает ее значение. Спасибо за ответ!
CLASS A:
public class Main {
public String RANDOM_ADDRESS = faker.address().streetAddress();
public final String ADDRESS() {
return this.RANDOM_ADDRESS;
}
}
CLASS B:
public class Service extends Main {
public Service (AppiumDriver driver)
{
super(driver);
}
public void checkLocationName()
{
String SAVED_ADDRESS = this.ADDRESS();
this.checkTextOfElementsAreEqual(By.id(COMPLETED_LOCATION_NAME), SAVED_ADDRESS , "Cannot find the Location name", 5);
}
}
Привел немного другой пример, без xpath переменной, но суть та же. В классе B переменная RANDOM_ADDRESS получается заново, а хочу, чтобы оставалась той же, что и в классе A.
KelDreek, у вас тут между классами ничего не передается. У вас есть класс Service, наследующий Main (я предполагаю, что "Maint" - это опечатка).
При создании класса Service у него инициализируется ЕГО поле RANDOM_ADDRESS с, видимо, произвольными данными. Вы даже вызываете метод this.ADDRESS() ! this - это указание на экземпляр этого же класса.
Изменил по вашим рекомендациям. Теперь выдает ошибку, что Main в классе Service - пустой. Не могли бы взглянуть, в чем еще может быть проблема?
public class Main {
public String RANDOM_ADDRESS = faker.address().streetAddress();
public String ADDRESS() {
return this.RANDOM_ADDRESS;
}
}
public class Service extends Main {
public Service (AppiumDriver driver)
{
super(driver);
}
public Main Main;
String SAVED_ADDRESS = Main.ADDRESS();
public void checkLocationName()
{
this.checkTextOfElementsAreEqual(By.id(COMPLETED_LOCATION_NAME), SAVED_ADDRESS , "Cannot find the Location name", 5);
}
}
KelDreek, вам бы книжку почитать...
Вот подробный пример:
public class A {
private int randomInt = new Random().nextInt();
public int getIntFromA() {
return randomInt;
}
}
public class B {
private A a;
public B(A a) {
this.a = a;
}
public void printSomeInt() {
var intFromA = a.getIntFromA();
System.out.println(intFromA);
}
}
public class Main {
public static void main(String[] args) {
var a = new A();
var b = new B(a);
b.printSomeInt();
}
}
Dmitry Roo, здравствуйте,я понимаю,что вопрос старый,но...если есть возможность,подскажите,откуда в книге взят приведенный вами пример. Заранее благодарен!
Incvisitorr, в java можно передать значение поля. Это будет либо примитив, либо ссылка на объект.
Почитать об этом всем можно в классической литературе вроде Эккеля/Шилдта/Хорстмана.