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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我们知道内部类不能定义静态成员,但内部类可以定义在静态的方法中么?如果可以就免费赠送我一个例子吧

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

4 个回复

倒序浏览

不能,因为静态的要编译期确定 而非静态的是运行期确定的 不同步了 所以不能。
静态态成员是要在类被使用前要正确加载到内存中,如果你的内部类是静态的,那么虚拟机就可以加载其内部的静态字段与方法,反之则不可以,加载都无法完成,我们怎么可以使用类名.字段名或方法名来调用呢?
首先内部的静态类他是不能直接被实例化的。你必须实例化外部类才能实例化它。而外部类不是默认加载的,他只有在手动实例化之后才有内存分配。

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

回复 使用道具 举报
  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. }
复制代码
将别人的代码修改了一下,就得到了这个代码
回复 使用道具 举报
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);

        }
}
貌似可以
回复 使用道具 举报
到底行不行啊,有说可以的有说不行的,个人认为是可以的就是罕见了点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马