通常,如果所读写 的代码包含了内部类,那么它们都是"平凡的"内部类,简单并且容易理解,然而,内部类的语法覆盖了大量其它的更加难以理解的计数,例如可以在一个方法里或者在任意的作用域里定义内部类.这么做有两个理由

1)如前所述,你实现了某类型的接口,于是可以创建并返回对其的引用

2)你要创建一个复杂的问题,想创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用的.

在后面的例子中前面的代码将被修改,以用来实现:

1)一个定义在方法中的类

2)一个定义在作用域内的类,此作用域在方法的内部

3)一个实现了接口的匿名类

4)一个匿名类,它扩展了有非默认构造器的类

5)一个匿名类,它执行字段初始化

6)一个匿名类,它通过实例初始化实现构造(匿名类不可以能有过构造器)

//: innerclasses/Destination.java
package object;
public interface Destination {String readLabel();
} ///:~
//: innerclasses/Parcel5.java
// Nesting a class within a method.
package object;
public class Parcel5 {public Destination destination(String s) {class PDestination implements Destination {//在destination方法之外不可使用类,可以通过Destination使用private String label;                   //PDestination类的public方法
private PDestination(String whereTo) { label = whereTo; } public String readLabel() { return label; } } return new PDestination(s); } class PDestination //可以定义和PDestination重名的类,但最好不这样做  { } public static void main(String[] args) { Parcel5 p = new Parcel5(); Destination d = p.destination("Tasmania"); } } ///:~

//: innerclasses/Parcel6.java
// Nesting a class within a scope.
package object;
public class Parcel6 {private void internalTracking(boolean b) {if(b) {class TrackingSlip { //在if域之外类TrackingSlip不可用,可以通过internalTracking方法调用,TrackingSlip类的方法private String id;TrackingSlip(String s) {id = s;}String getSlip() { return id; }}TrackingSlip ts = new TrackingSlip("slip");String s = ts.getSlip();}// Can't use it here! Out of scope://! TrackingSlip ts = new TrackingSlip("x");
  }    public void track() { internalTracking(true); }public static void main(String[] args) {Parcel6 p = new Parcel6();p.track();}
} ///:~

转载于:https://www.cnblogs.com/jiangfeilong/p/10223232.html

Java 在方法和作用域内的内部类相关推荐

  1. 9.Java面向对象-方法参数类型及返回值类型、权限修饰符、内部类、匿名内部类

    9.Java面向对象-方法参数类型及返回值类型.权限修饰符.内部类.匿名内部类 一.类名作为形式参数 A:案例演示: 类名作为形式参数当你以后看到一个方法的形参要一个 类 类型,你就传递一个该类的对象 ...

  2. Java基础复习-4-抽象类、内部类、接口

    目录 抽象类 一.概述 二.代码实例 **实例解析** 内部类 内部类分为:成员内部类,局部内部类以及匿名内部类 不同种类类的修饰符 局部内部类的final 匿名内部类(重要) 匿名对象是什么呢?请看 ...

  3. javascript调用java的方法

    这篇文章主要讲述如何在JavaScript脚本语言中调用Java类和接口,对大家的学习和工作有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧. 前言 本文中所有的代码使用 JavaScript 编 ...

  4. 零基础全方位学习java的方法

    java技术岗是一个就业率非常高的岗位,因此有很多人都想要学习java技术,其中不乏一些零基础同学,零基础小白都不清楚自己该如何学习java,那么下面小编就为大家详细的介绍一下零基础全方位学习java ...

  5. Java静态内部类、匿名内部类、成员式内部类和局部内部类

    内部类可以是静态(static)的,可以使用 public.protected 和 private 访问控制符,而外部类只能使用 public,或者默认. 成员式内部类 在外部类内部直接定义(不在方法 ...

  6. java中变量的作用域

    java中变量的作用域 变量一定会被定义在某一对大括号中,该大括号所包含的代码区便是这个变量的作用域.变量分为四个级块:类级 ,对象实例级 ,方法级 ,块级 类级:所谓的全局变量,需要使用static ...

  7. 入Java_初入Java的方法

    Java的方法类似于其他语言如C中的函数,比如我们第一个Java程序  输出Hello,world!中用到一个方法System.out.printfln():这里的printfln()就是一个方法,S ...

  8. Java微服务学习 第九天 接口 内部类

    2.接口 当抽象类中所有方法都是抽象方法的时候,那么这个类是一个特殊的抽象类,叫接口 接口是java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成. 格式: i ...

  9. Java 学习笔记(8)——匿名对象与内部类

    一般在编写代码时可能会遇到这样的场景--在某些时候,我需要定义并某个类,但是只会使用这一次,或者是某个类对象只会使用一次,为它们专门取名可能会显的很麻烦.为了应对这种情况,Java中允许使用匿名对象和 ...

  10. Java中方法的学习

    目录 概述 第一章:Java中的方法是什么意思 (1)Java中方法的定义 ①方法的修饰符 ②方法的返回值类型 ③方法名 ④方法的参数列表 ⑤方法体 第二章:方法的重载和重写 (1)方法的重载 (2) ...

最新文章

  1. 打开线程 | 进程 | 协程的大门
  2. iOS WKWebView JS原生交互之JS调用OC(附demo)
  3. Matlab求矩阵大小
  4. python抢票代码_GitHub标星超12K,抢票神器大更新,支持候补
  5. cron 每月最后一个自然日_日乙前瞻:鹿岛樱花谁能冲击亚冠,浦和红钻能否守住最后一个主场...
  6. 【服务器】挖矿病毒 kdevtmpfsi(一针见效)
  7. tomcat8+idea远程调试
  8. 【java基础知识】通过java实时查询数据库
  9. CEF js调用C#封装类含注释
  10. JAVA通过调用数据库函数调用存储过程
  11. [译] 用 Redis 和 Python 构建一个共享单车的 app
  12. rtcp webrtc 接收_WebRTC RTP/RTCP 源码分析(四):RTCP 的接收和解析
  13. [HAOI2006]聪明的猴子
  14. 多张图片合成一张jpg工具_比较好的拼图软件,多张图片合并工具
  15. 2022-02-09大数据学习日志——Hadoop离线阶段——Hive窗口函数、性能调优
  16. BabeLua--Lua调试器
  17. 【笔记】openwrt - Dnsmasq替换SmartDns+ADguardHome、koolproxy
  18. 虚拟化识别共享USB加密狗|银行U盾等解决方案
  19. 清除windows 远程桌面访问记录 批处理
  20. 智慧课堂辅助App的设计与实现

热门文章

  1. Struts2之Action的基本配置
  2. [渝粤教育] 郑州财税金融职业学院 玩转e时代 参考 资料
  3. 【渝粤教育】国家开放大学2018年秋季 2080T现代教育思想 参考试题
  4. 【渝粤教育】国家开放大学2018年秋季 1141t工程经济与管理 参考试题
  5. 数据挖掘:概念与技术 笔记
  6. PyTorch并行与分布式(二)分布式通信包torch.distributed
  7. Debugview调试视图
  8. python之路 -- 并发编程之进程
  9. 分层架构(第一张章)
  10. 【转】雅虎邮箱免费开通POP方法 YAHOO!MAIL YMAIL免费开通POP.SMTP和转发功能