匿名内部类

--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3889467.html  "谢谢--

1.由于局部内部类并不可见,因此不如使用匿名内部类替代。
只有当需要定义或重写类的构造方法,或者需要多个类的对象时,才建议使用局部内部类。
2.由于构造方法必须与类名相同,而匿名内部类没有类名,因此不能为其定义构造方法。
如果程序代码非常简单,则使用匿名内部类会使结构比价清晰。反之则不推荐使用匿名内部类。
3.匿名内部类常用于Swing中的组件的监控:
如:
ActionListenner listener = new ActionListenner(){
public void actionPerformed(ActionEvent e){}
};

静态内部类

静态内部类是使用static修饰的内部类,在静态内部类中,可以使用外部类定义的静态域,
但是不能使用非静态域,这是静态内部类与非静态内部类最大的区别
如:
public void fuction(){
public static class ObjectB{}
}
注意:ObjectB类不能声明成private的,否则不能使用其中定义的方法。

静态内部类的使用:
在内部类不需要访问外部类的对象时,可以将其设置成静态内部类。
可以像静态域和方法那样使用类名来引用静态内部类。

例如:
利用静态内部类来求一个数组的最大值和最小值:
package com.xhj.OOP.innerclass;

/**
* 静态内部类的使用
*
* @author XIEHEJUN
*
*/
public class InnerStaticClass {

public static class ResultInner {
private double max;
private double min;

public ResultInner(double max, double min) {
this.max = max;
this.min = min;
System.out.println("max = "+max+"\tmin = "+min);
}

public double getMax() {
return max;
}

public double getMin() {
return min;
}
}

/**
* 遍历数组,求出数组最大值和最小值
*
* @param array
* @return
*/
public static ResultInner getResult(double[] array) {
double max = Double.MIN_VALUE;
double min = Double.MAX_VALUE;
for (double d : array) {
if (d > max) {
max = d;
}
if (d < min) {
min = d;
}
}
return new ResultInner(max, min);
}

public static void main(String[] args) {
double[] array = new double[5];
System.out.println("源数组为:");
for (int i = 0; i < 5; i++) {
array[i] = 10* Math.random();
System.out.println(i+" "+array[i]);
}
System.out.println("遍历排序和后结果为:");
getResult(array);
}
}

java笔记--匿名内部类和静态内部类的理解和使用的更多相关文章

  1. java笔记--局部内部类认识与理解

    java内部类 内部类应用最多的场景是在编写GUI程序时,将大量的事件监听处理放在了内部类中进行 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XH ...

  2. java笔记--对信号量Semaphore的理解与运用

    java Semaphore 信号量的使用: 在java中,提供了信号量Semaphore的支持. Semaphore类是一个计数信号量,必须由获取它的线程释放, 通常用于限制可以访问某些资源(物理或 ...

  3. java笔记--关于多线程状态的理解和应用

    关于多线程的状态 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3890266.html  "谢谢-- 线程共有6种状态:1 ...

  4. Java四种引用--《深入理解Java虚拟机》学习笔记及个人理解(四)

    Java四种引用--<深入理解Java虚拟机>学习笔记及个人理解(四) 书上P65. StrongReference(强引用) 类似Object obj = new Object() 这类 ...

  5. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  6. java笔记1

    第五天学习笔记 1.面对对象的理解并举例? 面对对象的核心:找合适的对象做合适的事情. 面对对象编程的思想:尽可能的用计算机语言来描述现实生活中的事物. 面对对象:侧重于对象 2.类与对象之间的关系? ...

  7. JAVA静态和非静态内部类

    JAVA静态和非静态内部类 一直对java的静态和非静态内部类的东东理解不清楚,今天测试了一下,下面把测试结果记录一下,加深印象.用于以后查找. 直接上代码. package com.test.xml ...

  8. Java进阶(七)正确理解Thread Local的原理与适用场景

    原创文章,始自发作者个人博客,转载请务必将下面这段话置于文章开头处(保留超链接). 本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ Th ...

  9. 转 Java笔记:Java内存模型

    Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...

随机推荐

  1. hibernate配置hbm2ddl.auto的四个参数

    <!-- Drop and re-create the database schema on startup --> <!-- hbm(hibernatemapping) ,ddl( ...

  2. Types的Type访问模式

    在Types类中定义的访问都类如下: 1.MapVisitor类 2.SimpleVisitor 3.UnaryVisitor 4.TypeRelation

  3. https证书pfx 生成 pem,crt,key

    (1)将.pfx格式的证书转换为.pem文件格式:    openssl pkcs12 -in xxx.pfx -nodes -out server.pem (2)从.pem文件中导出私钥server ...

  4. Java Servlet 缺点

    1.web.xml配置比较多 2.servlet具有容器依赖性(tomcat没有启动,就没有用)

  5. PHP之string之ltrim()函数使用

    ltrim (PHP 4, PHP 5, PHP 7) ltrim - Strip whitespace (or other characters) from the beginning of a s ...

  6. 深入redis内部--实现双向链表

    数据结构的应用--Adlist.h定义 1.节点结构 typedef struct listNode {    struct listNode *prev;  //前向节点    struct lis ...

  7. guava快速入门(一)

    Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support] ...

  8. WPF 用户控件嵌入网页

    WPF使用用户控件嵌入网页,直接使用WebBrowser或Frame会产生报错,报错信息如下: 1.使用WebBrowser,<WebBrowser Source="http://19 ...

  9. 【C#】权限修饰符

    这个看了蛮多遍的,但是由于有一些一直不用,老是忘记,记录一下:) private  成员只能由同一个类(class)类型中的其他成员访问. family  成员可由派生类访问,不管那些类型是否在用一个 ...

  10. 十六、curator recipes之DistributedIdQueue

    简介 curator实现了一种分布式ID队列,也是遵循FIFO原则,比普通队列新增的一个点是ID队列可以根据ID对队列元素进行操作,比如移除该元素. 官方文档:http://curator.apach ...