A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 pancl 于 2014-7-10 12:55 编辑

  1. class test
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.          method1();
  6.     }
  7.    public static void method1()
  8.     {
  9.        int x=1;
  10.        int y=2;

  11.        method2();
  12.        public static void method2()
  13.        {
  14.                System.out.println(x+y);
  15.        }
  16.    }
  17. }
复制代码
编译会出错,“非法的表达式的开始”是因为在方法内不能在定义方法吗?如果在实际应用中,需要method1和method2并且method1中定义的很多变量都会在mehod2被使用。该如何修改代码结构呢?谢谢了

2 个回复

倒序浏览
java是不允许方法内部嵌套方法的,但是有办法绕过去,方法内部可以嵌套内部类,类里面又可以嵌套方法,这样就达到了你的要求:
// 伪代码,旨在理解
class A{

     void  a(){
         new interface {
                 void b(){
                       //
                  }
        }
      
   }
}


按照变量的作用范围来说,内部类是不能访问方法内的变量的,  除非将方法内的变量声明为final的,才能访问
回复 使用道具 举报
本帖最后由 王松朝 于 2014-8-4 23:11 编辑

按照你说的意思来看,并不需要内部类这样的东西,只需要把变量定义成  全局变量即可
like this;
class      A{
           int aa,bb,cc;
          void a(){

          }

          void b(){

          }
       ///// 或者也可以这样

        void c(){
           int a1,a2;
           d(a1,a2);
        }
        void  d(int a1,int a2){

        }

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马