精华内容
下载资源
问答
  • java 匿名

    2018-08-18 16:35:39
    匿名对象的使用方式之一:当对对象的方法只调用一次时,我们可以用匿名对象来完成 ,比较简化 匿名对象的使方式之二:匿名对象可以被当做实参传递 */ class Car{  String color;  void start(){  System.out....

    /*
    匿名对象:没有名字和对象
    匿名对象的使用方式之一:当对对象的方法只调用一次时,我们可以用匿名对象来完成
    ,比较简化
    匿名对象的使方式之二:匿名对象可以被当做实参传递
    */
    class Car{
        String color;
        void start(){
            System.out.println("汽车被开动");
        }
    }

    public class A6_54{
        public static void main(String[] args){
            Car c=new Car();
            print(c);
    }
        static void print(Car c){
            c.start();
        }
    }

    展开全文
  • 我们知道一般实例化一个对象的格式,如下:Car car = new Car();...那所谓 Java 匿名对象,简单理解就是对象没有名字嘛。那怎样的对象会没有名字呢?如下:new Car();那这种匿名对象如何使用呢?所谓使用就是指...

    我们知道一般实例化一个对象的格式,如下:

    Car car = new Car();

    其中,变量名 car 就是 new Car() 这个对象的名字。car 是引用类型的变量,它的值存放的是对象的引用(或地址),通过 car 这个变量我们就可以间接使用对象。

    那所谓 Java 匿名对象,简单理解就是对象没有名字嘛。那怎样的对象会没有名字呢?如下:

    new Car();

    那这种匿名对象如何使用呢?所谓使用就是指调用对象的属性和方法。如下:

    new Car().door;

    new Car().start();

    这两行代码有两个 new 关键字,说明实例化了两个对象,并不是一个哦。

    由于这两个对象没有名字,所以这两行代码执行完以后,我们就无法再使用它们了,然后它们将会被 GC(Java 垃圾回收机制)当作垃圾回收掉。

    所以,匿名对象只能被调用一次。

    那匿名对象有什么用处呢?没什么卵用。

    唯一有点用处的地方就是,当对象对方法或属性仅进行一次调用的时候,使用匿名对象可以少写一些代码,代码看起来更简洁。

    //匿名对象调用方法

    new Car().start();

    //非匿名对象调用方法

    Car car = new Car();

    car.start();

    看到了吧,使用匿名对象只需要一行代码,而非匿名对象需要两行代码。

    另外,匿名对象也可以作为参数传递给方法

    //给汽车添加一个重启方法

    public void restart(Car car) { // 汽车熄火了,需要传入另一辆汽车帮忙点火重新启动

    //...

    }

    Car car = new Car();

    car.restart(new Car()); //匿名对象作为参数使用

    以后看到匿名对象的使用,相信你不会再觉得别扭或奇怪啦。

    展开全文
  • 本篇文章给大家详细讲解了Java匿名对象与匿名内部类的相关知识点,有兴趣的读者一起学习下。
  • 主要介绍了Java匿名类,匿名内部类,结合实例形式分析了Java匿名类,匿名内部类相关原理、用法及操作注意事项,需要的朋友可以参考下
  • Java匿名内部类原理与用法详解发布于 2020-7-2|复制链接摘记: 本文实例讲述了Java匿名内部类原理与用法。分享给大家供大家参考,具体如下:一 点睛匿名内部类适合创建那种只需要一次使用的类,定义匿名内部类的语法...

    Java匿名内部类原理与用法详解

    发布于 2020-7-2|

    复制链接

    摘记: 本文实例讲述了Java匿名内部类原理与用法。分享给大家供大家参考,具体如下:一 点睛匿名内部类适合创建那种只需要一次使用的类,定义匿名内部类的语法格式如下:

    ```java

    new 父类构造器(实参列表) ..

    本文实例讲述了Java匿名内部类原理与用法。分享给大家供大家参考,具体如下:一 点睛匿名内部类适合创建那种只需要一次使用的类,定义匿名内部类的语法格式如下:

    ```java

    new 父类构造器(实参列表) | 实现接口()

    {

    //匿名内部类的类体部分

    }

    ```

    从上面的定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。两条规则。

    匿名内部类不能是抽象类。

    匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以初始化块,可以通过初始化块来完成构造器需要完成的工作。

    二 实战1 点睛最常用的创建匿名内部类的方式是创建某个接口类型的对象。2 代码

    ```java

    interface Product

    {

    public double getPrice();

    public String getName();

    }

    public class AnonymousTest

    {

    public void test(Product p)

    {

    System.out.println("购买了一个" + p.getName()

    + ",花掉了" + p.getPrice());

    }

    public static void main(String[] args)

    {

    AnonymousTest ta = new AnonymousTest();

    // 调用test()方法时,需要传入一个Product参数,

    // 此处传入其匿名内部类的实例

    ta.test(new Product()

    {

    public double getPrice()

    {

    return 567.8;

    }

    public String getName()

    {

    return "AGP显卡";

    }

    });

    }

    }

    ```

    3 运行

    购买了一个AGP显卡,花掉了567.8

    4 说明定义匿名内部类无须class关键字,而是在定义匿名内部类时直接生成该匿名内部类的对象。由于匿名内部类不能是抽象类,所以匿名内部类必须实现它的抽象父类或接口里包含的所有抽象方法。三 实战1 点睛当通过接口来创建匿名内部类时,匿名内部类不能显示创建构造器,因此匿名内部类里只有一个隐式的无参构造器,故new接口名后的括号里不能传入参数值。如果通过继承父类来创建匿名内部类时,匿名内部类将拥有和父类相似的构造器,此处的相似指的是拥有相同的形参列表。2 代码

    ```java

    abstract class Device

    {

    private String name;

    public abstract double getPrice();

    public Device(){}

    public Device(String name)

    {

    this.name = name;

    }

    // 此处省略了name的setter和getter方法

    public void setName(String name)

    {

    this.name = name;

    }

    public String getName()

    {

    return this.name;

    }

    }

    public class AnonymousInner

    {

    public void test(Device d)

    {

    System.out.println("购买了一个" + d.getName()

    + ",花掉了" + d.getPrice());

    }

    public static void main(String[] args)

    {

    AnonymousInner ai = new AnonymousInner();

    // 调用有参数的构造器创建Device匿名实现类的对象

    ai.test(new Device("电子示波器")

    {

    public double getPrice()

    {

    return 67.8;

    }

    });

    // 调用无参数的构造器创建Device匿名实现类的对象

    Device d = new Device()

    {

    // 初始化块

    {

    System.out.println("匿名内部类的初始化块...");

    }

    // 实现抽象方法

    public double getPrice()

    {

    return 56.2;

    }

    // 重写父类的实例方法

    public String getName()

    {

    return "键盘";

    }

    };

    ai.test(d);

    }

    }

    ```

    3 运行

    购买了一个电子示波器,花掉了67.8

    匿名内部类的初始化块...

    购买了一个键盘,花掉了56.2

    当创建以Device为父类的匿名内部类时,既可以传入参数,代表调用父类带参数的构造器;也可以不传入参数,代表调用父类无参数的构造器。当创建匿名内部类时,必须实现接口或抽象父类里的所有抽象方法。如果有需要,也可以重写父类中的普通方法。四 实战1 点睛在Java 8之前,Java要求被局部内部类、匿名内部类访问的局部变量必须使用final修饰,从Java 8开始这个限制取消了,Java 8更加智能:如果局部变量被匿名内部类访问,那么该局部变量相对于自动使用了final修饰。2 代码

    ```java

    interface A

    {

    void test();

    }

    public class ATest

    {

    public static void main(String[] args)

    {

    int age = 8; // ①

    // 下面代码将会导致编译错误

    // 由于age局部变量被匿名内部类访问了,因此age相当于被final修饰了

    //age = 2;

    A a = new A()

    {

    public void test()

    {

    // 在Java 8以前下面语句将提示错误:age必须使用final修饰

    // 从Java 8开始,匿名内部类、局部内部类允许访问非final的局部变量

    System.out.println(age);

    }

    };

    a.test();

    }

    }

    ```

    3 结果

    8

    展开全文
  • Java 匿名内部类

    2017-08-02 22:58:32
    Java 匿名内部类的学习demo
  • 本文实例讲述了Java匿名类,匿名内部类。分享给大家供大家参考,具体如下:本文内容:内部类匿名类首发日期 :2018-03-25内部类:在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类...

    本文实例讲述了Java匿名类,匿名内部类。分享给大家供大家参考,具体如下:

    本文内容:

    内部类

    匿名类

    首发日期 :2018-03-25

    内部类:

    在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外部类】

    如果想要通过一个类来使用另一个类,可以定义为内部类。【比如苹果手机类,苹果手机类中的黄金版的是特别定制的】

    内部类的外部类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外部类中的方法。【不论是静态还是非静态的,内部类都可以直接调用外部类中的属性,】

    62157a3b713c4be1b10b8f6149c2d22c.png

    内部类的类体中不可以声明类变量和类方法

    ff388e1706b542ae8a4b90ad62f37795.png

    内部类可以由外部类使用外部类中在函数中创建内部类对象来使用,

    8ac097da4d4ca6f1009dcde2be3b4a86.png,如果内部类的权限是非私有,非静态的,就可以在外部其他程序中被访问到,就可以通过创建外部类对象完成,

    3f54637dbb69e5739f295ed5d0b5b5da.png;如果内部类是静态的,非私有的,静态成员可以直接类名调用,非静态成员通过创建外部类对象使用。

    d6d80142514707387e2cad230b669856.png

    class Outer{

    int a=5;

    static int b=6;

    void show() {

    System.out.println("hello world");

    }

    class Inner{

    void use() {

    System.out.println(a);//5

    System.out.println(b);//6

    show();//hello world

    }

    }

    void create() {

    new Inner().use();

    }

    }

    public class Demo {

    public static void main(String[] args) {

    new Outer().create();

    Outer.Inner oi=new Outer().new Inner();

    oi.use();

    }

    }

    补充:

    内部类的字节码文件会不一样。会变成外部类名$内部类名

    8fe160e4e4cbfc4ed2f6b44a2880c01a.png

    将内部类定义在了局部位置上。

    7a5df7cfd1243359d9f0895c557b1106.png

    可以访问外部类的所有成员

    局部内部类不能访问所在局部的局部变量(本来他们生命周期不同,本来内部类对象的空间没有消失,对象生命长)若需访问,加final修饰变量即可,加final变成常量。(jdk1.8自动修饰了final)

    内部类如果定义成静态的,那么生命周期跟普通的static没什么区别。

    匿名类:

    匿名类,就是没有名称的类,其名称由Java编译器给出,一般是形如:外部类名称+$+匿名类顺序,没有名称也就是其他地方就不能引用,不能实例化,只用一次,当然也就不能有构造器。

    匿名类就是利用父类的构造函数和自身类体构造成一个类。

    f9d368758d9f7a07f0183db8e3c2c97e.png

    上面格式中的“父类”是子类需要继承或者实现外部的类或者接口

    匿名类可以继承父类的方法,也可以重写父类的方法。

    匿名类可以访问外部类的成员变量和方法,匿名类的类体不可以声明称static成员变量和static方法。

    匿名类由于是一个new的结果,所以其实可以赋值给一个父类对象。因此可以分为两种匿名类,成员匿名类和局部匿名类(作为函数参数)

    965ffe68168dca039e31df2ed5e1da9c.png

    实现接口方法的例子:

    b43569a7d46a94bbe0b151f1fc10b279.png

    class Outer{

    void show() {

    System.out.println("run in Outer");

    }

    }

    public class Demo {

    public static void main(String args[]) {

    Outer ot=new Outer(){

    void show() {

    System.out.println("run in Inner");

    }

    };

    ot.show();//run in Inner

    }

    }

    希望本文所述对大家java程序设计有所帮助。

    展开全文
  • java匿名内部类通过接口的方式进行实现package 匿名内部类接口实现;public interface PowerSupply {//开通电源void Open();//关闭电源void Close();}package 匿名内部类接口实现;public class Tv {public static ...
  • java匿名对象

    2017-11-27 10:11:07
    java匿名对象
  • 本文实例讲述了Java匿名内部类原理与用法。分享给大家供大家参考,具体如下:一 点睛匿名内部类适合创建那种只需要一次使用的类,定义匿名内部类的语法格式如下:new 父类构造器(实参列表) | 实现接口(){//匿名内部...
  • Java 匿名内部类详解匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口实例1:不使用匿名内部...
  • 下面小编就为大家带来一篇老生常谈java匿名内部类。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java匿名对象

    2020-04-18 09:18:24
    Java匿名对象一、匿名对象 虽然是创建对象的简化写法,但是应用场景非常有限。 创建匿名对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量。 创建匿名对象时,会在堆区中给对象分配内存空间,但是却没有...
  • 匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个名字的。下面是一个关于匿名类的简单例子:public static void main(String[] args) throws InterruptedException {Thread t=new Thread...
  • 匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下:new () {// 类的主体};这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类...
  • java匿名

    2019-02-26 11:58:12
    java 匿名类有 成员内部类、局部内部类、匿名内部类和静态内部类。写的很清楚具体的一些基础这里就不说了,可参考 https://www.cnblogs.com/dolphin0520/p/3811445.html 写的很清楚。 这里举一个 匿名内部类 的常用...
  • Java 匿名类在本教程中,您将借助示例学习Java中的匿名类。在Java中,一个类可以包含另一个称为嵌套类的类。可以在不提供任何名称的情况下创建嵌套类。没有任何名称的嵌套类称为匿名类。必须在另一个类中定义一个...
  • 主要介绍了Java匿名内部类原理与用法,结合实例形式分析了Java匿名内部类的概念、原理、应用与相关操作注意事项,需要的朋友可以参考下
  • 本文将通过正则表达式来过滤文件夹中的某些特殊文件,并打印出来。.../*** Java匿名内部类* @author zzw**/import java.io.File;import java.io.FilenameFilter;import java.util.Arrays;import java.util.reg...
  • 主要介绍了java匿名内部类实例代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java匿名类(匿名内部类) 学习的参考博文:无恨之都 1. 初识 匿名类 标准说法: 内部类包括:成员类、局部类、匿名类(匿名内部类)。 匿名类概念: 匿名类可以使你的代码更加简洁 (JDK8之后Lambda更简洁)。 你可以...
  • 主要给大家介绍了关于Java匿名内部类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Java匿名内部类

    2020-07-17 18:21:26
    Java匿名内部类 什么是匿名内部类 匿名内部类,顾名思义,就是没有名字的类,一个带具体实现的父类或者父接口的匿名的`子类对象。匿名内部类格式如下 new name([参数列表]){ //name为父类或者是接口的名字 //方法...
  • 主要介绍了Java 匿名内部类详解及实例代码的相关资料,需要的朋友可以参考下
  • Java匿名对象的使用

    2020-05-01 16:40:14
    java匿名对象 1.使用匿名对象调用实例变量和实例方法 2.使用匿名对象向方法传递参数 3.使用匿名对象作为方法的返回值
  • Java匿名内部类这篇文章来深入的了解一下匿名内部类的使用Java匿名类中的thisjava的匿名类特性,在于可以在项目里“内联”地实现一个类型,它可以继承一个现有的具体或抽象类,或是实现接口,并提供完整的成员实现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,833
精华内容 8,333
关键字:

java匿名

java 订阅