其他类无法访问静态变量

时间:2016-02-15 11:11:19

标签: java android

public static DevicePolicyManager minochaDevicePolicyManager;
public static ComponentName minochaDevicePolicyAdmin;

以上代码位于MainActivity java上方的onCreate课程中。 由于它是静态的,不应该被其他类访问吗?我有这个课程MyBroadCastReceiver(下面的代码)

public class MyBroadcastReceiver  extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    String LOG_TAG="DevicePolicyAdmin";
    Log.v(LOG_TAG, "Service Started");
    Calendar c = Calendar.getInstance();
    int hour=c.get(Calendar.HOUR_OF_DAY);
    int  minute=c.get(Calendar.MINUTE);
    Calendar calendar = new GregorianCalendar(1990, 1, 1, hour, minute);
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
    String date = sdf.format(calendar.getTime());
    String str=date.charAt(0)+""+date.charAt(1)+""+date.charAt(3)+""+date.charAt(4);
    minochaDevicePolicyManager.resetPassword(str,0);
}
}

无法在BroadcastReceiver类中解析minochaDevicePolicyManager。为什么?它是一个静态变量,所以它应该可以被其他类访问吗?

4 个答案:

答案 0 :(得分:5)

要从第二个类访问静态字段,您需要import static字段,或按类名访问。

 minochaDevicePolicyManager.resetPassword(str,0);

应该是

 MainActivity.minochaDevicePolicyManager.resetPassword(str,0);

答案 1 :(得分:4)

static变量附加到类而不是它的对象,这意味着它可以直接从类名调用而不创建对象。

您正尝试像局部变量一样访问变量。

更改

minochaDevicePolicyManager.resetPassword(str,0);

MainActivity.minochaDevicePolicyManager.resetPassword(str,0);

答案 2 :(得分:3)

您应该像这样访问它:

MainActivity.minochaDevicePolicyManager

答案 3 :(得分:0)

静态变量是类变量。如果您从同一个类调用静态变量,那么您只能使用类名调用,但是当您从其他类调用静态方法时,您应该使用类名称点方法名称,即< / p>

CLASS.method()