一、.this

  我们都知道this是指当前类中的对象本身,但是在内部类中需要指明外部类时,this不再起作用,那应该怎么做呢?下面,让我们看看:

public class DotThis {
void f() {
System.out.println("DotThis.f()");
} public class Inner {
public DotThis outer() {
return DotThis.this;
//A plain "this" would be Inner's "this"
}
} public Inner inner() {
return new Inner();
} public static void main(String[] args) {
DotThis dt = new DotThis();
Inner dti = dt.inner();
//DotThis.Inner dti = dt.inner(); can be the same as pre line.
dti.outer().f();
}
}

二、.new

  有时你可能想要告知某些对象,去创建其某个内部类的对象。要实现此目的,你必须在new表达式中提供对其他外部类对象的引用,这是需要使用.new语法,就像下面这样:

public class DotNew {
public class Inner {
public Inner() {
System.out.println("DotNew.Inner.Inner()");
}
} public static void main(String[] args) {
DotNew dn = new DotNew(); //ok
// Inner dni = new Inner(); //ok
Inner dni = dn.new Inner(); //ok
DotNew.Inner dny = dn.new Inner(); //ok
}
}

内部类之.this&&.new的更多相关文章

  1. java中的内部类

    /** * 内部类 ?? * 定义在一个内部的类,被称为内部类. * 内部类里有类体,方法体 * 内部类所在的类,被称为外部类. * --------------------------------- ...

  2. java中的内部类总结

    内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然, ...

  3. 错误: 从内部类中访问本 地变量vvv; 需要被声明为最终类型

    从github 下载了源码, 进行编译, 出现了下面的错误 E:\downloads\ff\elasticsearch-master\elasticsearch-master>GRADLE :b ...

  4. Java内部类final语义实现

    本文描述在java内部类中,经常会引用外部类的变量信息.但是这些变量信息是如何传递给内部类的,在表面上并没有相应的线索.本文从字节码层描述在内部类中是如何实现这些语义的. 本地临时变量 基本类型 fi ...

  5. Java内部类学习笔记

    20160923 定义:将一个类的定义放在另一个类的内部: 从外部类的非静态方法之外,创建某个内部类的对象:OutClassName.InnerClassName: 内部类拥有所有其外部类的成员的访问 ...

  6. Android XML中引用自定义内部类view的四个why

    今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...

  7. 静态方法中不能new内部类的实例对象的总结

    class Test{ public void main(String[] args){ A testA=new A(); //这里会出现问题 new Thread(new Runnable(){ p ...

  8. Java内部类与外部类的那些事

    昨天去笔试的时候遇到了Java的内部类的创建方式与访问权限的问题,我不懂,没写,故今天起来特意去试验一下,就有了这篇总结性的文章. Java中的内部类又分为非静态内部类(匿名内部类也是非静态的内部类) ...

  9. java 多态和内部类

    接口跟接口之间存在继承关系 一个接口可以继承多个接口 一个非抽象类:必须实现接口中的所有方法 一个抽象类实现接口  可以不实现接口中的方法  但是继承与抽象类的类必须要是实现接口中的方法 多态:一个对 ...

  10. JAVA内部类有关

    最近在看单例模式的实现,看到有一种利用JAVA静态内部类的特性来实现,对于内部类我还真是不了解,遂了解了一下,代码贴上. /** * 内部类分为:成员内部类.局部内部类.匿名内部类和静态内部类. */ ...

随机推荐

  1. phpmyadmin登陆提示#2002 无法登录 MySQL 服务器和设置自增

    看看mysql启动没有,结果是mysql服务没有启动,找了半天,是这个原因,那就右键计算机->管理->服务->启动mysql服务 设置自增:在显示出来的一行字段定义中把浏览器的滚动条 ...

  2. (转)server.urlencode有什么用?怎么用?

    这个函数主要是为了,不同浏览器的事,如果你传递的参数是中文,有的浏览器就显示出错,如果转换成编码形式,就可以正确传递!当然在IE下2个结果都是一样的,你看不出来区别,用编码来传递参数是一个好习惯,养成 ...

  3. 在iOS8下使用CLLocationManager定位服务需要系统授权

    最近在ios8.0使用CLLocationManager定位服务,发现老不能定位,查看设置菜单中的项也是处于未知状态.想起之前都有一个弹出框提示用户是否允许定位,这次一直没有出现了.原来ios8.0下 ...

  4. 如何安装Git到MAC OS X

    这里介绍两种方式:一,使用Git command-line二,使用GUI工具SourceTree,功能很强大,很方便 在进行安装前,要说一下,Git和SVN一样,都需要创建一个服务器的,他们都可以创建 ...

  5. 有用的前端demo

    js定时器循环切换字体和背景颜色<script type="text/javascript"> var flashId = 0; setInterval(functio ...

  6. java事件处理5(窗口,窗口坐监视器

    WindowEvent窗口事件 添加接口 addWindowListener(WindowEvent e) 接口有七个方法 public void windowActivated(WindowEven ...

  7. CSS 特效 (教程还是英文的好)

    Border-radius: create rounded corners with CSS! http://www.css3.info/preview/rounded-border/

  8. PHP面向对象多态性的应用

    多态是面向对象的三大特性中除封装和继承之外的另一重要特性.它展现了动态绑定的功能,也称为“同名异式”.多态的功能可让软件在开发和维护时,达到充分的延伸性.事实上,多态最直接的定义是让具有继承关系的不同 ...

  9. Apache的配置

    Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/s ...

  10. 使用 Nuget打包类库

    使用 Nuget打包类库 NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget ...