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

时间:2016-04-20 06:30:50

标签: java

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

这是正确的,如果它是正确的,我们不应该使用public static变量,在Java中的其他类中使用一个类的变量。那么简单的方法是什么。

  1. 创建对象并使用变量
  2. 创建接口类。
  3. 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);
    

    我正在做什么。是的,我的前辈告诉不要使用公共静态。所以我在问问题。如果错了,解决方案是什么。

5 个答案:

答案 0 :(得分:0)

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

public static int variable;

然后从另一个班级开始:

ExternalClass.variable;

请记住,将变量设为静态意味着它不依赖于类的任何特定实例。如果你有一个班级Example,那么你可以:

Example e = new Example();

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以在Java中访问另一个类的public static个变量。首先查看一些基本教程Understanding Class Members

  

有时,您希望拥有所有对象共有的变量。这是通过静态修改器完成的。在声明中具有static修饰符的字段称为静态字段或类变量。它们与类相关联,而不是与任何对象相关联。该类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量。

答案 3 :(得分:0)

恕我直言,快速回答是否定的。一般来说,你应该小心暴露VARIABLES;如果它们是静态场,则更多。这种方法在CONSTANTS方面有所改变。我会使用static修饰符来公开常量,因为不存在意外修改其值的风险。

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

答案 4 :(得分:0)

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

Heres and example。

sed -i 's/<blacklist>/<blacklist>\n<blacklistEntry>\n<groupNames>A\,B\,C<\/groupNames>\n<errorCode>0222<\/errorCode>\n<\/blacklistEntry>/g' file.xml

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

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);
  }
}