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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 hnyzhlq 于 2015-6-6 17:58 编辑

  • class W
  • {
  •         public static void main(String[] args)
  •         {
  •                 int y=X;
  •         }
  •         public void test()
  •         {      
  •                 class N//定义在局部的内部类。
  •                 {
  •                         final int X=1;//需要访问的常量。
  •                         void show()
  •                         {
  •                                 System.out.println("X="+X);
  •                         }
  •                 }
  •         new N().show();
  •         }
  • }

如以上代码,运行是会报错的,要怎么操作,才能达到第五行代码的目的,在外部类W中访问到X?






6 个回复

倒序浏览
请各位大神解答!!
回复 使用道具 举报
直接new W().test();
回复 使用道具 举报

我不是要执行test()函数,我是要直接访问X
回复 使用道具 举报

问题已修改,这样问应该会清楚一点- -
回复 使用道具 举报
可以的,你可以研究一下下面这段代码,用的反射,不要问我为什么,解释起来很繁琐。
  1. package com.itheima.demo;

  2. /**
  3. * @author RuiWu
  4. */

  5. import java.lang.reflect.Constructor;
  6. import java.lang.reflect.Field;


  7. class W
  8. {
  9.         public void test()
  10.         {      
  11.                 class N//定义在局部的内部类。
  12.                 {
  13.                         final int x=1;//需要访问的常量。
  14.                         void show()
  15.                         {
  16.                                 System.out.println("X="+x);
  17.                         }
  18.                 }
  19.                 new N().show();
  20.         }
  21.         
  22.         public static void main(String[] args) throws Exception {

  23.                         Class<?> clazz = Class.forName("com.itheima.demo.W$1N");
  24.                         Constructor con = clazz.getDeclaredConstructor(W.class);
  25.                         Object obj = con.newInstance(new W());
  26.                        
  27.                        
  28.                         Field f = clazz.getDeclaredField("x");
  29.                         System.out.println(f.get(obj));
  30.                 }
  31. }
复制代码
回复 使用道具 举报 1 0
fenglinluomu 发表于 2015-6-6 19:02
可以的,你可以研究一下下面这段代码,用的反射,不要问我为什么,解释起来很繁琐。 ...

好的,谢谢,我还没学到反射T.T学了再回来看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马