黑马程序员技术交流社区

标题: 晕啊,一个帖子发到第四届了,重发下这个问题 [打印本页]

作者: 系磊    时间: 2012-8-5 10:38
标题: 晕啊,一个帖子发到第四届了,重发下这个问题
我们知道内部类不能定义静态成员,但内部类可以定义在静态的方法中么?如果可以就免费赠送我一个例子吧
作者: 刘润辰    时间: 2012-8-5 11:09

不能,因为静态的要编译期确定 而非静态的是运行期确定的 不同步了 所以不能。
静态态成员是要在类被使用前要正确加载到内存中,如果你的内部类是静态的,那么虚拟机就可以加载其内部的静态字段与方法,反之则不可以,加载都无法完成,我们怎么可以使用类名.字段名或方法名来调用呢?
首先内部的静态类他是不能直接被实例化的。你必须实例化外部类才能实例化它。而外部类不是默认加载的,他只有在手动实例化之后才有内存分配。
作者: 王渠    时间: 2012-8-5 11:14
  1. public class StaticClass {
  2.         public static void main(String[] args) {
  3.                 show();
  4.         }       
  5.         public static void show(){
  6.                 class In{
  7.                         In(String name){
  8.                                 this.name = name;
  9.                         }
  10.                         private String name;
  11.                         public String getName(){
  12.                                 return name;
  13.                         }
  14.                 }
  15.                 String name = new In("AA").getName();
  16.                 System.out.println(name);
  17.         }
  18. }
复制代码
将别人的代码修改了一下,就得到了这个代码
作者: 朱烈葵    时间: 2012-8-5 11:45
class StaticClass
{
        public static void main(String[] args)
        {
               
                Test();
               
        }
        public static void Test()
        {
                class InnerTest
                {
                        private String name;

                        InnerTest(String name)
                        {
                                this.name=name;
                        }

                        public String getName()
                        {
                                return name;
                        }

                }

                String name = new InnerTest("aaa").getName();

                System.out.println(name);

        }
}
貌似可以
作者: 系磊    时间: 2012-8-5 17:13
到底行不行啊,有说可以的有说不行的,个人认为是可以的就是罕见了点




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2