zoukankan      html  css  js  c++  java
  • Java匿名类

    匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个名字的。

    下面是一个关于匿名类的简单例子:

    
    	public static void main(String[] args) throws InterruptedException {		Thread t=new Thread(new Runnable() {
    				System.out.println("hello,dusk!");
    


    Java语言规范上是这么描述匿名类的:

    匿名类的声明:

    匿名类的声明是由java编译器自动派生自一个类实例创建表达式。

    匿名类永远不能是抽象的。

    匿名类总是隐式的final。

    匿名类总是一个内部类;并且不能是static的。

    实际使用中我们只需注意这几点儿:

          1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
          2、匿名内部类中是不能定义构造函数的。
          3、匿名内部类中不能存在任何的静态成员变量和静态方法。
          4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
          5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

    编译时的命名规则:

    • 内部类的class文件命名是:主类+$+内部类名
    • 匿名类的class文件命名是:主类+$+(1,2,3....)

    定义一个场景:

    package com.dusk.anonymous;
    public class AnonymousClassTest {	private Runnable r1=new Runnable() {
    			System.out.println(1);
    		Runnable r2=new Runnable() {
    				System.out.println(2);
    	public static void main(String[] args) {			Runnable r3=new Runnable() {
    					System.out.println(3);
    

    从代码中我们可以看出定义了三个匿名类:

    我们反编译出来:

    1.  

      https://blog.csdn.net/jiaotuwoaini/article/details/51542059

  • 相关阅读:
    团队作业WEEK3
    团队作业week2#
    团队作业week2
    Team Homework #3
    learning from the previous teams
    Team Homework #2
    Java语法基础相关
    关于Java的专有名词
    图片验证码
    省市二级联动
  • 原文地址:https://www.cnblogs.com/feng9exe/p/9268786.html
Copyright © 2011-2022 走看看