论坛首页 Java企业应用论坛

原来Java代码还能这么写?

浏览 16637 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-08-30  
过了N年, 偶才发现原来构建器还能这么写:
    private Map initData = new HashMap();{
        {
            put("foo","blah");;
            put("bar","blah");;
        }
    };


真是每天都有新发现呀
   发表时间:2004-08-30  
我想这个是匿名内部类的语法吧, 其实得到的是一个 HashMap 的子类, 不信你编译出来看看是不是有一个内部类.
0 请登录后投票
   发表时间:2004-08-30  
果然是一个内部匿名类
good good study, day day up.
0 请登录后投票
   发表时间:2004-08-30  
我最近在研究think in java 楼主也去看看吧,不然以后发这种帖子多丢人啊。我觉得内部类的确有点东西,不过不是有很多人习惯使用^_^。

  说说搂主提到的东西。
class 我的补充 {

  private Map initData = new HashMap(){
                                                {
put("foo","blah");
put("bar","blah");
}
   void toString() {System.ou.println("匿名内部类没有构造函数^_^");}

};

}

楼主写的东西因为pivate所以一定是一个类的属性,所以我补充了一下,比较好看,关键是在new后面,这里HashMap是个接口, new+ 后面一大堆的意思是,有一个类继承自接口HashMap(类的内容是花口号中的东西),然后生成了这个类的一个实例,上溯到HashMap这个接口。  匿名类里面的put方法实际上是一个类内的快,在初始化时调用。表达能力有限啊随便说说大家别骂我。
0 请登录后投票
   发表时间:2004-08-30  
这个帖子有什么丢人的? 偶以前不知道Java代码可以这样写, 最近在复习thinking in java, 觉得自己发现新大陆当然要大声地喊出来了.
0 请登录后投票
   发表时间:2004-08-30  
很希望大家能借这个帖子发表一下对内部类的看法,因为我的确有很多疑惑,很想和大家交流一下,现在在天津混,也做不到什么好项目就开始研究基础知识,发现很多地方的东西,还不是很清楚^_^,大家也一样吧,东西不能逃,要一个一个的解决,我有开始罗索了^_^。
  从基本的内部类说说,类时可以多层嵌套的,例如:

class 最外曾类 {
  
   class a {
     class b {
       class c {
         class d {
           // 不知道能有多少层??:)
       }
     }
   }

   class kk {
      int mygirl = 0;
   }
  
   void med0() {
     class {
       // 我考这里都行啊,真的行!!
    }
  }

}
0 请登录后投票
   发表时间:2004-08-30  
楼主我说话就是这个样子的^_^,别计较了^_^,我们还是说正事好了,这个我写的缩进怎么都被过滤了哎。
  还有特别的东西呢:

class sample {
   interface {
     void itfmed();
     // 我考借口都可以使用内部的呢!
  }
}

class test extends sample.interface {
   void itfmed() {
   ;
   }
}

内部借口啊,看到没我研究出来的,没有看过这方面的书。
0 请登录后投票
   发表时间:2004-08-30  
内部借口是可以被继承的,但是内部类是不可以被继承的,我说是在主类的外面(主类是我乱叫的),这可能是内部类的原则吧,把不想公开的东西写在内部。如果想提供给外部,继承一个借口,然后返回的是这个借口^_^。

class sample {
 
  class innercls {
    // 烂的写内容了
  }

  protected class innercls2 {
    // 可以用protected修饰!
  } 

  private clas innercls3{
    // 可以用private修饰!
  }

}

/*
  class out extends sample.innercls{
    //这样写会报错!!
  }
*/
0 请登录后投票
   发表时间:2004-08-30  
哦,没有人喜欢研究基础的东西哦,^_^那我就自言自语好了,真是伤心啊,
  我想问问内部类都规定不能被外面的类继承了,为什么还能用protected,private来修饰,他们起什么作用?
0 请登录后投票
   发表时间:2004-08-31  
别急,有兴趣和你讨论的人,可能还在睡觉。等他(她)醒来以后会看见的。

另外,你的代码可以加上【code】【/code】标记,这样显示起来会很好看的。【】要换成[]。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics