我们可以使用公共静态变量,在java中使用一个类在另一个类中的可用性吗



在Java中,我们可以使用public static变量来使用另一个类中的一个类的变量吗?有些人说不应该使用它,因为当类卸载时,变量将分配给null

这是正确的吗?如果正确的话,我们不应该使用public static变量,而应该在Java中的另一个类中使用一个类的变量。那么简单的方法是什么呢。

  1. 创建对象并使用变量
  2. 创建接口类

Java在另一个类中使用一个类的变量的标准方法是什么?

更新:

public class BluetoothLePlugin extends CordovaPlugin
{
public static CallbackContext callBack;
public boolean execute(final String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
callBack=callbackContext;

}

}

这里我得到了Callbackcontext,我想在其他类中使用这个回调上下文,比如

public class mainClass{
  public void onCreate() {

        BluetoothUtils mBluetoothUtils = new BluetoothUtils(mActivity);
        BluetoothAdapter.LeScanCallback  mLeScanCallback =null;
        mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
            @Override
            public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {

                Log.d("BluetoothLeDevice", " " + device + " " + device.getName() + "      " + rssi + "    " + scanRecord + "  " + device.getAddress());
                mDeviceAdress = "80:98:00:98:00:5A";
                jsonobdevice = new JSONObject();
                if (device.getName() != null && device.getName().trim().length() > 0) {
                    try {
                        if (!jsonobdevice.has("uuid)") ){
                            jsonobdevice.put("name", device.getName());
                            jsonobdevice.put("uuid", device.getAddress());
                            jsonobdevice.put("state", "");
                            jsonarraydevice.put(jsonobdevice);
                            Log.d("", " " + jsonarraydevice);
                            PluginResult result = new PluginResult(PluginResult.Status.OK, jsonarraydevice);
               result.setKeepCallback(true);
                            BluetoothLePlugin.callBack.sendPluginResult(result);//Here I am using callback context like this
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
              //  Callbackpublic.webView.loadUrl("javascript:");

            }
        };
        BluetoothLeScanner mScanner = new BluetoothLeScanner(mLeScanCallback, mBluetoothUtils);
        boolean mIsBluetoothOn = mBluetoothUtils.isBluetoothOn();
        boolean mIsBluetoothLePresent = mBluetoothUtils.isBluetoothLeSupported();
        mBluetoothUtils.askUserToEnableBluetoothIfNeeded();
        if (mIsBluetoothOn && mIsBluetoothLePresent) {
            mScanner.scanLeDevice(-1, true);
        }
    }
}

我在上面的类中使用这样的

BluetoothLePlugin.callBack.sendPluginResult(result);

就是我正在做的。是正确的,我的学长告诉我不要使用公共静态。所以我在问问题。如果是错误的,解决方案是什么。

是的,您可以使用public static方法访问Java中另一个类的变量。类似于:

public static int variable;

然后从另一个类别:

ExternalClass.variable;

请记住,使变量为静态意味着它不与类的任何特定实例绑定。如果你有一个Example类,并且你有:

Example e = new Example();

类Example的静态变量属于类(Example.variable)而不是实例(e.variable)。

是的,您可以使用静态变量来使用其他类中的值。因为静态变量在整个应用程序生命周期中都驻留在内存中。

您可以使用setter和getter在另一个具有该值的类中创建一个新变量。这被称为实例变量。

以下是示例。

public class Car
{
 private int milage = 100;
  //........

 public int getMilage()
 {
    return this.milage;
 }

然后在另一个类中创建该类的实例。

 public class ExampleClass
{
  public static void main(String [] args)
  { 
    Car c = new Car();
    int newMilageVariable = c.getMilage();
    System.out.println(newMilageVariable);
  }
}

此外,您可以使用一个静态变量,该变量可以通过其他类访问。下面的代码示例就足够了。

 public static int milage;

 //********************
public class ExampleClass
{
  //..............
  Car c = new Car();   // new car object
  int milage = c.milage;  //access the static variable
}

快速答案是否定的。一般来说,您应该小心暴露VARIABLES;如果它们是静态场,则更是如此。这种方法随常数而变化。我会使用静态修饰符来公开常量,因为不存在意外修改其值的风险。

请记住,静态字段值的更改会影响该类的所有实例;因为它是类本身的属性,而不是单个实例的属性。

是的,静态变量和静态方法可以通过类引用在任何其他类中使用。

MyClass.staticvariablename;
MyClass.anyStaticMethod();

MyClass具有静态变量和方法,我们可以在具有相应方法/variable的引用类的任何其他类中使用它们。

相关内容

最新更新