首页 > 解决方案 > 如何在不创建新对象的情况下从另一个类访问非静态变量

问题描述

我希望能够在不创建新对象的情况下从另一个类访问非静态变量和非静态方法。

在我们项目的现有代码中,由于创建新对象,它的创建类实例化问题。

请参阅下面的创建两个类及其变量都是非静态的。

注意:我们保持变量和方法非静态,以支持使用 Test NG 套件执行并行测试。意味着相同的代码必须同时支持多个执行。因此不能将声明更改为静态,因为静态变量不支持并行执行。

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 是另一个 Class 说 Class3 是必需的,我们不必扩展 Class 1 即 DataBaseQueries

公共类 CommonActions 扩展配置{

// non static Class variable
public int g_intSavedValueValue;

// 验证保存值的非静态方法 public Integer ecSavedvalue{ g_intSavedValueValue=ecDBGetNumericValue("Select value from tableA where ID =100") }

}

公共类配置{

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

// 非静态方法

public Integer ecSample{ g_intSavedValueValue=ecDBGetNumericValue("Select value from tableA where ID =100") }

标签: javaclassvariablesstaticstatic-methods

解决方案


尝试扩展类,这里是示例

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

推荐阅读