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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

石伟

中级黑马

  • 黑马币:0

  • 帖子:13

  • 精华:0

Outer.Inner in = new Outer(new Inner()),这句话什么意思啊?在版主问的问题里面看到的,又实在想不出来答案

我只知道可以这样定义:
Outer out = new Outer();
Outer.Inner in =out.new Inner();
或者等价于:
Outer.Inner in = new Outer().new Inner();

上面那种写法我真没见过,求解释!

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

6 个回复

正序浏览
张宁 发表于 2013-3-11 16:31
class souter {
           int a ;
        class inner{

你这代码 挺坑的,,为什么只有public 类名 是规范写法,会误人子弟
回复 使用道具 举报
class souter {
           int a ;
        class inner{
          int b = 100;
               int funb(){
                       int result  = a + b ;
                       return result;
               }
                   }
}
public  class Outer{
         public static void main(String[] args) {
                 souter out = new souter();
                souter.inner in =out.new inner();
                souter.inner in = new souter(new inner());//我编写了一下,左边是一个inner类,右边是一个带参数的outer类,
                       //我不知道这句话是怎么用的,初步判断,不存在这种可能,他是错的。
                       int s= in.funb();
                       System.out.println(s);
        }
}
回复 使用道具 举报
Outer.Inner in = new Outer(new Inner());
这样编写应该是有误的。定义的类型都不一致,不能通过编译。
Outer.Inner:表示内部类对象。
new Outer(new Inner());表示Outer对象的构造函数需要一个Inner对象的参数。但无论怎么样,构造函数返回值都是Outer对象。
所有该句代码有误,不能通过编译。
回复 使用道具 举报
本帖最后由 邹学良 于 2013-3-11 15:54 编辑

Outer.Inner in = new Outer(new Inner())两边的都类型不一样,而且它们没有什么继承关系,不能这么写吧?
Outer.Inner是Inner类型,new Outer(new Inner())返回的是Outer类型
而new Outer(new Inner())中new Inner()作为一个参数传递给Outer构造方法 ,但是 Inner作为一个内部类,这样的话也传递不了啊?!
回复 使用道具 举报
我也看到这个问题了,在网上没有查到这种写法,而且在myeclipse里面,这句话的定义有问题。等待版主的答案
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马