精华内容
下载资源
问答
  • 什么匿名类
    2019-11-01 08:51:23
    匿名类的特点:
    1:将一组只读属性封装到单个对象中,不需要预先定义一个类型
    2:类型名有编译器产生,每个属性的类型由编辑器推断出来
    
     static void Main(string[] args)
            {
                var student =new {name="张三",Age=20};
    
                Console.WriteLine(student.name);
                Console.WriteLine(student.Age);
                Console.ReadKey();
            }
    
    
    匿名类型使用方法:
    1:使用var定义匿名类型变量
    2:直接作为方法参数值进行传递
    
    在mvc 路由规则中的默认参数会看到
    
    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }// 这个就是匿名类
                );
            }
    
    更多相关内容
  • 主要介绍了Java匿名类,匿名内部类,结合实例形式分析了Java匿名类,匿名内部类相关原理、用法及操作注意事项,需要的朋友可以参考下
  • 今天小编就为大家分享一篇关于Java为什么匿名内部参数引用需要用final进行修饰?,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 主要介绍了C++编程中的匿名类类型和位域,是C++入门学习中的基础知识,需要的朋友可以参考下
  • 匿名内部类又叫匿名类,它有点像局部类(Local Class)或者内部类(Inner Class),只是匿名内部类没有名字,我们可以同时声明并实例化一个匿名内部类。 一个匿名内部类仅适用在想使用一个局部类并且只会使用这个局部类...

    定义

    匿名内部类又叫匿名类,它有点像局部类(Local Class)或者内部类(Inner Class),只是匿名内部类没有名字,我们可以同时声明并实例化一个匿名内部类。

    一个匿名内部类仅适用在想使用一个局部类并且只会使用这个局部类一次的场景。

    匿名内部类是没有需要明确声明的构造函数的,但是会有一个隐藏的自动声明的构造函数。

    创建匿名内部类有两种办法:

    1. 通过继承一个类(具体或者抽象都可以)去创建出匿名内部类
    2. 通过实现一个接口创建出匿名内部类

    咱们看看下面的例子:

    // 接口:程序员
    interface Programmer {
        void develop();
    }
    
    public class TestAnonymousClass {
        public static Programmer programmer = new Programmer() {
            @Override
            public void develop() {
                System.out.println("我是在类中实现了接口的匿名内部类");
            }
        };
    
        public static void main(String[] args) {
            Programmer anotherProgrammer = new Programmer() {
                @Override
                public void develop() {
                    System.out.println("我是在方法中实现了接口的匿名内部类");
                }
            };
    
            TestAnonymousClass.programmer.develop();
            anotherProgrammer.develop();
        }
    }
    
    

    从上面的例子可以看出,匿名类既可以在类中也可以在方法中被创建。

    之前我们也提及匿名类既可以继承一个具体类或者抽象类,也可以实现一个接口。所以在上面的代码里,我创建了一个叫做 Programmer 的接口,并在 TestAnonymousClass 这个类中和 main() 方法中分别实现了接口。

    Programmer除了接口以外既可以是一个抽象类也可以是一个具体类。

    抽象类,像下面的代码一样:

    public abstract class Programmer {
        public abstract void develop();
    }
    

    具体类代码如下:

    public class Programmer {
        public void develop() {
            System.out.println("我是一个具体类");
        }
    }
    

    OK,继续深入,那么如果 Programmer 这个类没有无参构造函数怎么办?我们可以在匿名类中访问类变量吗?我们如果继承一个类,需要在匿名类中实现所有方法吗?

    public class Programmer {
        protected int age;
    
        public Programmer(int age) {
            this.age = age;
        }
    
        public void showAge() {
            System.out.println("年龄:" + age);
        }
    
        public void develop() {
            System.out.println("开发中……除了异性,他人勿扰");
        }
    
        public static void main(String[] args) {
            Programmer programmer = new Programmer(38) {
                @Override
                public void showAge() {
                    System.out.println("在匿名类中的showAge方法:" + age);
                }
            };
            programmer.showAge();
        }
    }
    
    
    1. 构造匿名类时,我们可以使用任何构造函数。上面的代码可以看到我们使用了带参数的构造函数。
    2. 匿名类可以继承具体类或者抽象类,也能实现接口。所以访问修饰符规则同普通类是一样的。子类可以访问父类中的 protected 限制的属性,但是无法访问 private 限制的属性。
    3. 如果匿名类继承了具体类,比如上面代码中的 Programmer 类,那么就不必重写所有方法。但是如果匿名类继承了一个抽象类或者实现了一个接口,那么这个匿名类就必须实现所有没有实现的抽象方法。
    4. 在一个匿名内部类中你不能使用静态初始化,也没办法添加静态变量。
    5. 匿名内部类中可以有被 final 修饰的静态常量。

    匿名类的典型使用场景:

    1. 临时使用:我们有时候需要添加一些类的临时实现去修复一些问题或者添加一些功能。为了避免在项目里添加java文件,尤其是仅使用一次这个类的时候,我们就会使用匿名类。
    2. UI Event Listeners:在java的图形界面编程中,匿名类最常使用的场景就是去创建一个事件监听器。比如:
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
        }
    });
    

    上面的代码中,我们通过匿名类实现了 setOnClickListener 接口,当用户点击按钮的时候,就会触发我们实现的 onClick 方法。

    展开全文
  • 主要给大家介绍了关于Java匿名内部的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 本文主要介绍了Java中匿名类的两种实现方式。具有很好的参考价值,下面跟着小编一起来看下吧
  • 主要简单给我们介绍了java中匿名内部构造函数,并附上了简单的示例,有需要的小伙伴可以参考下。
  • 主要介绍了Java局部内部匿名内部,结合实例形式分析了java局部内部匿名内部相关定义、原理与用法,需要的朋友可以参考下
  • 主要介绍了Java通过匿名类来实现回调函数的例子,回调函数就是一种函数签名(若干个输入参数、一个输出参数)的规范,java虽不存在函数声明,但是java可以用接口来强制规范。具体操作步骤大家可查看下文的详细讲解,...
  • 以下是对java中的匿名内部进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
  • 在这篇博客中你可以了解到匿名内部的使用、匿名内部要注意的事项、如何初始化匿名内部匿名内部使用的形参为何要为final。  一、使用匿名内部内部  匿名内部由于没有名字,所以它的创建方式有...
  • 主要介绍了Kotlin 匿名类实现接口和抽象类的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 匿名内部

    2020-12-22 12:07:09
    1.什么是匿名内部 所谓匿名内部(anonymous inner class),是指可以利用内部创建没有名称的对象,它一步完成了声明内部和创建该的一个对象,并利用该对象访问到内的成员,这种不取名字,而是直接用...
  • java内部分为: 成员内部、静态嵌套、方法内部匿名内部。这篇文章主要介绍了Java中的匿名内部的相关资料,需要的朋友可以参考下
  • 什么是匿名内部,如何使用匿名内部

    千次阅读 多人点赞 2020-11-12 14:09:48
    什么要使用匿名内部 在实际开发中,我们常常遇到这样的情况:一个接口/的方法的某个实现方式在程序中只会执行一次,但为了使用它,我们需要创建它的实现/子类去实现/重写。此时可以使用匿名内部的方式,...

    匿名内部类

    匿名内部类,就是没有名字的一种嵌套类。它是Java对类的定义方式之一。

    为什么要使用匿名内部类

    在实际开发中,我们常常遇到这样的情况:一个接口/类的方法的某个实现方式在程序中只会执行一次,但为了使用它,我们需要创建它的实现类/子类去实现/重写。此时可以使用匿名内部类的方式,可以无需创建新的类,减少代码冗余

    下面详细说明一下

    假设当前有一个接口,接口中只有一个方法

    public interface Interface01 {
        void show();
    }
    

    为了使用该接口的show方法,我们需要去创建一个实现类,同时书写show方法的具体实现方式

    public class Interface01Impl implements Interface01{
        @Override
        public void show() {
            System.out.println("I'm a impl class...");
        }
    }
    

    如果实现类Interface01Impl全程只使用一次,那么为了这一次的使用去创建一个类,未免太过麻烦。我们需要一个方式来帮助我们摆脱这个困境。匿名内部类则可以很好的解决这个问题。

    我们使用匿名内部类

    public static void main(String[] args) {
        Interface01 interface01 = new Interface01() {
            @Override
            public void show() {
                System.out.println("这里使用了匿名内部类");
            }
        };
        //调用接口方法
        interface01.show();
    }
    

    成功运行结果

    这里使用了匿名内部类

    如何使用匿名内部类

    基本格式

    new 接口/类名(参数1, 参数2...){
        实现方法1(){
            
        }
        实现方法2(){
            
        }
        ......
    };
    

    在上文的使用中,我们没有创建实现类就实现了具体的show方法。同时定义了接口的对象变量interface01。我们发现,这个变量和平常使用多态后的使用方式没有区别。

    通常,我们也习惯用这样的方式创建并启动线程

    new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("我是一个线程");
        }
    }).start();
    

    常见问题

    1. 匿名内部类是怎么实现的

      在上文代码编译后,我们查看一下class文件的路径

    BxrQZd.png

    再反编译一下看看

    BxsW1f.png

    至此,我们可以得知,匿名内部类在编译期间,会生成一个名称以$编号结尾的class文件,即它被识别为一个真实的类,仅在编译前(java文件)为匿名的形态。

    1. 匿名内部类只可以使用在接口上吗

      不是的。匿名内部类可以用在具体类、抽象类、接口上,且对方法个数没有要求。

      举例说明:设存在具体类Class01,抽象类AbstractClass01,接口Interface01

      //具体类
      public class Class01 {
          public void show(String s){
              System.out.println("啦啦啦");
          }
      }
      
      //抽象类
      public abstract class AbstractClass01 {
          abstract void show(String s);
      }
      
      //接口
      public interface Interface01 {
          void show(String s);
      }
      

      测试类TestInner

      public class TestInner {
          public static void main(String[] args) {
              
              //重写具体类的方法
              new Class01(){
                  @Override
                  public void show(String s) {
                      System.out.println("我是一个" + s);
                  }
              }.show("具体类");
      
              //重写抽象类的抽象方法
              new AbstractClass01(){
                  @Override
                  void show(String s) {
                      System.out.println("我是一个" + s);
                  }
              }.show("抽象类");
      
              //实现接口的抽象方法
              new Interface01(){
                  @Override
                  public void show(String s) {
                      System.out.println("我是一个" + s);
                  }
              }.show("接口");
      
      
          }
      }
      

      运行结果

      我是一个具体类
      我是一个抽象类
      我是一个接口

    展开全文
  • java匿名内部类什么是匿名内部类?匿名内部类的使用场景?匿名内部类如何创建?匿名内部类的实现和使用例1(实现接口)例2(继承类) 什么是匿名内部类? 匿名内部类,顾名思义,就是不知道这个类到底是什么名字,也...

    什么是匿名内部类?

    匿名内部类,顾名思义,就是不知道这个类到底是什么名字,也就是不知道类名。

    匿名内部类的使用场景?

    匿名内部类适合创建那种只需要使用一次的类,也就是说创建一个匿名内部类,只需要用一次即可。

    匿名内部类如何创建?

    new 类名(参数) | 实现接口()
    {
    // 匿名内部类的类体部分
    }
    从上面的定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或者实现一个接口。
    两个规则:
    	匿名内部类不能是抽象类。
    	匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以初始化块,可以通过初始化块来完成构造器需要完成的工作。
    

    匿名内部类的实现和使用

    例1(实现接口)

    首先,定义一个匿名类要实现的接口,代码如下

    public interface Product{
     double getPrice();
     String getName();
    

    然后,定义一个实体类,实体类定义一个方法,方法的参数为上述的接口对象,到时候会传入一个匿名类对象,这个匿名类实现了上述创建的接口,代码如下

    public class Anony{
    	public void test(Product product){
    	System.out.println("购买了一个"+product.getName()+",花掉了"+product.getPrice());
    	}
    }
    

    最后测试运行:

    pubic class Test{
    	public static void main(String[] args){
    		Anony anony=new Anony();
    		// 注意,此处要传入一个匿名类对象
    		anony.test(new Product(){
    			@Override
    			public double getPrice(){
    					return 578.6;
    				}
    			@Override
    			public String getName(){
    					return "联想笔记本";
    				}
    			}
    		);
    	}
    }
    

    输出:

    购买了一个联想笔记本,花掉了578.6
    

    总结:此处匿名内部类的作用就是实现了一个接口,创建了一个实现了该接口的类的对象,然后重写了这个接口中的方法。

    例2(继承类)

    首先,定义一个匿名类需要实现的抽象类,代码如下:

    public abstract class Device{
    	private String name;
    	public abstract double  getPrice();
    	public String getName(){
    	 	return name;
    	}
    	public Device(){}
    	public Device(String name){
    		this.name=name;
    	}
    } 
    

    然后,定义一个实体类,实体类定义一个方法,方法的参数为上述的抽象类对象,到时候会传入一个匿名类对象,这个匿名类继承了上述创建的抽象类,代码如下

    public class Anony {
    
        public void test(Device device){
            System.out.println("购买了一个"+device.getName()+"花费了"+device.getPrice());
        }
    }
    

    最后测试运行:

    pubic class Test{
    	public static void main(String[] args){
    		Anony anony=new Anony();
    		// 注意,此处要传入一个匿名类对象
    		anony.test(new Device("海尔电视机"){
    			@Override
    			public double getPrice(){
    					return 578.6;
    				}
    		);
    		Device device=new Device(){
    			@Override
    			public double getPrice(){
    				return 556.56;
    			}
    			@Override
    			public String getName(){
    				return "美的电视机";
    			}
    		};
    		annoy.test(device);
    	}
    }
    

    输出:

    购买了一个海尔电视机,花掉了578.6
    购买了一个美的电视机,花掉了556.56
    

    总结:对象匿名类中继承抽象类,对于抽象类里面的抽象方法,必须要重写,对象抽象类里面的非抽象方法,可重写也可以不重写。

    展开全文
  • 什么是匿名内部? 顾名思义 匿名 就是没有名字,一个没有名字的内部,称为匿名内部。 下面先看一个例子,比如说你想和你的女朋友去看春节档的《唐人街探案三》 这个时候我们要先定义一个接口,去看唐探3的接口...
  • Java 匿名类(匿名内部类)

    千次阅读 多人点赞 2020-12-25 23:41:48
    Java匿名类(匿名内部类) 学习的参考博文:无恨之都 1. 初识 匿名类 标准说法: 内部类包括:成员类、局部类、匿名类(匿名内部类)。 匿名类概念: 匿名类可以使你的代码更加简洁 (JDK8之后Lambda更简洁)。 你可以...
  • Java在嵌套类型这里提供的特性比较多,假设:Java的字节码只支持静态嵌套,内部、局部内部匿名局部内部都是编译器提供的语法糖,这个假设目前没法验证(看不懂字节码),本文先来看一下C#是如何为我们提供...
  • 主要介绍了Java Lambda表达式与匿名内部的联系和区别,结合实例形式分析了Java Lambda表达式与匿名内部功能、用法、区别及操作注意事项,需要的朋友可以参考下
  • java中匿名内部详解

    2020-08-30 19:47:50
    主要对java中的匿名内部的详细总结,需要的朋友可以参考下
  • 主要介绍了JS匿名函数生成方式,结合实例形式分析了javascript匿名函数相关属性与方法定义与使用技巧,需要的朋友可以参考下
  • 匿名内部 匿名内部是没有名字的内部。 因为没有名字,所以匿名内部只能只能使用一次,通常用来简化代码编写。 使用匿名内部有个前提条件:必须继承一个父类或者实现一个接口。 匿名内部如何访问在...
  • 主要介绍了java 中使用匿名类直接new接口详解及实例代码的相关资料,需要的朋友可以参考下
  • 主要介绍了Java匿名内部原理与用法,结合实例形式分析了Java匿名内部的概念、原理、应用与相关操作注意事项,需要的朋友可以参考下
  • 本篇文章介绍了,java中匿名内部解读分析。需要的朋友参考下
  • List最全总结( ArrayList, LinkedList, 匿名类
  • NULL 博文链接:https://pengqb.iteye.com/blog/738210
  • 详细对比测试了匿名类/内部类/本地类之间的区别,有例子+博客对比说明,希望对大家有所帮助

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 370,644
精华内容 148,257
关键字:

匿名类是什么