黑马程序员技术交流社区
标题:
关于内部类生成外部类对象引用的方法 我有点迷糊
[打印本页]
作者:
崔自成
时间:
2013-3-18 11:55
标题:
关于内部类生成外部类对象引用的方法 我有点迷糊
两段代码
public class OutClassTest {
public static void main(String[] args) {
Out o = new Out();
Out.Inner i = o.getInner();
o = i.getOut();
o.print();
}
}
class Out{
void print(){
System.out.println("hello");
}
Inner getInner(){
return new Inner();
}
class Inner{
Out getOut(){//生成对外部类对象的引用
return new Out();
}
}
}
复制代码
public class OutClassTest {
public static void main(String[] args) {
Out o = new Out();
Out.Inner i = o.getInner();
o = i.getOut();
o.print();
}
}
class Out{
void print(){
System.out.println("hello");
}
Inner getInner(){
return new Inner();
}
class Inner{
Out getOut(){//生成对外部类对象的引用
return Out.this;
}
}
}
复制代码
请问 new Out() 和 Out.this 那种才是引用外部对象的正确方式? 这两个有啥区别?
作者:
孙晋学
时间:
2013-3-18 12:19
首先两种都可以得到外部对象。
如果返回的是new Out(),那是再创建一个新的Out对象返回,而不是调用getOut()方法的内部类所在的外部类对象。
返回Out.this一般来说是符合要求的
class Out{
void outPrint(){
System.out.println("out");
}
Inner getInner(){
return new Inner();
}
class Inner{
Out getOut(){
return Out.this;
}
void innerPrint(){
System.out.println("in");
}
}
}
复制代码
作者:
123
时间:
2013-3-18 12:41
两个都可以。
new Out():是重新生成的一个外部类。
Out.this:是正在调用这个内部类的外部类。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2