我们可以使用public static
变量,在Java中的其他类中使用一个类的变量吗?有些人说不应该使用beacuse,当类卸载时,变量将分配给null
。
这是正确的,如果它是正确的,我们不应该使用public static
变量,在Java中的其他类中使用一个类的变量。那么简单的方法是什么。
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);
我正在做什么。是的,我的前辈告诉不要使用公共静态。所以我在问问题。如果错了,解决方案是什么。
答案 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)
请记住,静态字段值的变化会影响该类的所有实例;因为它是类本身的属性而不是单个实例。
答案 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);
}
}