如何在一个方法中使用和全局变量同名的变量?因为所有结点都是绑定在按钮上的,都有触发后的事件,现在期望是只当某条件成立时,按钮上的显示不一样,功能不变.希望各位大侠帮帮忙,不知道这样说明白了没?class Test
{
private static final String ONE = "一";
private static final String TWO = "二";

......

private void test1()
{
if(某条件成立)
{
String ONE = "壹";
String TWO = "贰";
}

......

node.add(ONE);  //期望是“壹”
node.add(TWO);  //期望是“贰”

......
}

private void test2()
{
......

node.add(ONE);  //期望是“一”
node.add(TWO);  //期望是“二”

......
}

.......
}

解决方案 »

  1.   

    说实话没明白既然是final了,不能再赋值了吧
      

  2.   

    恩,我是在原来的代码上做修改,我只是打个比方,我有把final的修饰删除,还是不知道如何调用方法里面的那个变量
      

  3.   

    if(某条件成立) 

    String ONE = "壹"; 
    String TWO = "贰"; 
    }
    是局部变量,if结束,变量也结束了
    String ONE = Test.ONE;
    String TWO = Test.TWO;
    if(...)
    {
      ONE = "壹";
      TWO = "贰";
    }
    就近原则考虑,ONE和TWO肯定是先匹配局部变量,然后才是类的成员
      

  4.   

    变量就有一个就近原则,如果要引用同名全局的,可以用this关键字
      

  5.   

    把局部变量的声明放在if条件的外面class Test 

    private static final String ONE = "1"; 
    private static final String TWO = "2"; 
    private void test1() 

    String ONE; 
    String TWO; 
    if(true) 

     ONE = "3"; 
     TWO = "4"; 
    } System.out.println(ONE);
    System.out.println(TWO);} private void test2() 
    { System.out.println(ONE);System.out.println(TWO);

    public static void main(String[] args){
    Test t = new Test();
    t.test1();
    t.test2();

    }
    }输出
    3
    4
    1
    2
      

  6.   

    1.既然类中已经定义
    private static final String ONE = "1"; 
    private static final String TWO = "2";
    了,下面的函数里就不要定义 String ONE 和String TWO 了,直接拿来用不就完了2.如果是按钮上显示的字的话,可以if判断后设置啊,比如Button bt=new Button(); bt.setText("一");
      

  7.   

    如果局部变量名和全局变量名冲突的话,在方法内部只能访问到局部变量
    可以考虑如下方法
    if(....) {
    ONE = "XXX";
    TWO = "XXX";
    } else {
    ONE = Test.ONE;
    TWO = Test.TWO;
    }
    System.out.println(ONE);
    System.out.println(TWO);