繁体   English   中英

如果我已将其声明为Java中类的成员变量,是否可以访问另一个方法中一个方法的变量值?

[英]Can i access the value of a variable of one method in another method if i have declared it as a member variable of the class in java?

如果已将其声明为Java中类的成员变量,是否可以访问另一个方法中一个方法的变量值?

class xxx{
    public int[]yyy;
    private boolean handleMessage{
        ...
        int[]yyy = (int[]) msg.obj;
    }
    private zzz{
        int[]sval= yyy;
    }
}

yyy的值会延续到sval吗?

不,这会在方法范围内创建一个新变量,该变量将在方法结束时终止。 类级别成员仍然为null。

您需要做的就是改变

int[]yyy = (int[]) msg.obj;

yyy = (int[]) msg.obj;

但是请handleMessage ,如果不调用handleMessage ,而调用zzz ,则sval仍为null

如果我已将其声明为Java中类的成员变量,是否可以访问另一个方法中一个方法的变量值?

不,你不能。 方法局部变量yyy在声明的方法内部具有作用域。 您不能以任何方式在该方法之外访问它。

而且实例变量yyy与方法局部变量yyy没有任何关系。 两者是两个不同的。

您是对的...这就是成员变量的目的。

但是,您的清单中有一个小错误。 您已经定义了两个不同的yyy引用,一个在类级别,一个在方法级别。

您的分配应如下所示(无需在方法中再次创建新变量):

yyy = (int[]) msg.obj;

由于您在handleMessage()方法内创建了另一个变量yyy ,因此它具有方法范围。 除非您手动将其传递给其他方法,否则它不会携带到方法之外。

如果您只是在方法handleMessage()中为yyy分配了值而不是创建一个值,则可以像下面的代码那样在yyy获得分配给sval的值。

class xxx{
    public int[]yyy;
    private boolean handleMessage{
        ...
        yyy = (int[]) msg.obj; 
    }
    private zzz{
        int[]sval= yyy;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM