• 妙用this关键字


    妙用this关键字

    ## this关键字
    一般this关键字都是指的是对象的本身,在类的所有方法、构造器都可以拿到this引用,这是jvm“偷偷“帮我们传递进来的引用,指向调用方法对象的本身。
    this 关键字只能方法内部调用,表示对“调用那个方法的对象”的引用。

    ## this可以用在哪里

    1. 方法的链式调用
    2. 将当前对象传递给其他方法

    ------------
    1. 方法的链式调用
    举个例子有这个一个类,类中有一个递增的成员:

    public class Leaf{
        int i = 0;
    
        Leaf increment(){
            i++;
            return this;
        }
    }

    那这个时候我们调用就可以这样:

    new Leaf().increment().increment().increment();

    通过这样,在一条语句中便可以对一个对象调用多个方法,实现方法的链式调用;

    2. 将当前对象传递给其他方法
    当当前对象的某个方法需要其他的对象的操作参与进来的时候,这个时候可以将本对象在方法中委托给其他对象进行操作
    例如:

    class Person{
        public void eat(Apple apple){
            Apple peeled = apple.getPeeled();
            System.out.println("Ymmy");
        }    
    }
    
    class Peeler{
        static Apple peel(Apple apple){
            // ... remove peel
            return apple;
        }
    }
    
    class Apple{
        Apple getPeeled(){
            return Peeler.peel(this);    // 将本对象交由Peeler操作,但是不用显式传递对象的引用进入每个方法
        }
    }
    
    public class PassingThis{
        public static void main(String[] args){
            new Person().eat(new Apple());
        }
    }


    ## 总结

    this关键字可以实现对某个类对象进行一系列的方法调用,他的原理就是每个方法执行完成之后都会将对象的引用返回,所以 return this的方法中都是返回一个对象;
    this关键字可以不用在方法中显式传入自身的引用,在类的每个方法(static 方法除外,因为静态成员本来就不依赖实例化对象才能调用)

  • 相关阅读:
    spark基于zookeeper的高可用异常启动分析
    cdh 系统配置文件更新 error parsing conf core-site.xml
    spark2.1消费kafka0.8的数据 Recevier && Direct
    spark2.3 消费kafka0.10数据
    hadoop3.x的HA解析
    nginx安装运维
    redhat7 升级openssh openssl
    kylin 密码错误
    Vray5 材质库 图灵炸裂版 (支持Vray3.x) + VMMP
    让3dmax第一次打开材质浏览器不要卡顿
  • 原文地址:https://www.cnblogs.com/zhuangmingnan/p/8120938.html
Copyright © 2020-2023  润新知