Как получить доступ к нестатической переменной из другого класса без создания нового объекта - PullRequest
0 голосов
/ 05 июня 2018

Я хочу иметь возможность доступа к нестатическим переменным и нестатическим методам из другого класса без создания нового объекта.

В существующем коде нашего проекта проблема создания экземпляра класса из-за нового объектаcreation.

См. ниже создание. Оба класса и их переменные не являются статичными.

Примечание. Мы сохранили переменные и методы нестатическими для поддержки выполнения параллельных тестов с использованием комплекта Test NG.Означает, что один и тот же код должен поддерживать множественное выполнение одновременно.Следовательно, нельзя изменить объявление на статическое, поскольку статические переменные не могут поддерживать параллельное выполнение.

Открытый класс Class 1 DataBaseQueries {

// non static Class variable
public int g_intDBNumericValue;

    // non-static method 
public Integer ecDBGetNumericValue(String Query){ 

Code logic to get numeric value from Data base.......
// returing extracted numeric value
return g_intDBNumericValue;
}

}

// Class 2 // Здесь унаследованный класс Configuration - это еще один класс, скажем, Class3, который необходим, и нам не нужно расширять Class 1, т.е. DataBaseQueries

открытый класс CommonActions расширяет конфигурацию {

// non static Class variable
public int g_intSavedValueValue;

// нестатический метод для проверки сохраненного значения public Integer ecSavedvalue {g_intSavedValueValue = ecDBGetNumericValue ("Выбрать значение из tableA, где ID = 100")}

}

конфигурация открытого класса {

// non static Class variables
public int g_int1....;

// нестатические методы

public Integer ecSample {g_intSavedValueValue = ecDBGetNumericValue ("Выбрать значение из таблицы A, где ID = 100")}

1 Ответ

0 голосов
/ 05 июня 2018

Попробуйте расширить класс, вот пример

public class SuperClass {
    public int getNb() {
         //specify what must happen
        return 1;
     }

     public int getNb2() {
         //specify what must happen
        return 2;
     }
 }

 public class SubClass extends SuperClass {
      //you can override the implementation
      @Override
      public int getNb2() {
        return 3;
     }
 }

Subclass s = new SubClass();
  s.getNb(); //returns 1
  s.getNb2(); //returns 3

  SuperClass sup = new SuperClass();
  sup.getNb(); //returns 1
  sup.getNb2(); //returns 2
...