Java 8의 명시적 수신자 매개변수(this)

3943 단어
명시적인 수신기 매개 변수 iver ฟีเจอร์ ฟีเจอร์ ที่ มา ใหม่ ตั้ง ตั้ง แต่ java 8 ไม่ ค่อย ค่อย ได้ ใช้ บาง ครั้ง ก็ ลืม กัน ไป เลย ว่า มี มี วัน นี้ เรา มา มา ไว้ ซะหน่อย ซะหน่อย ซะหน่อย

ปกติ ปกติ ปกติ เวลา แล้ว แล้ว ที่ ที่ เป็น 인스턴스 메소드 (ที่ ไม่ ไม่ ใช่ ใช่ 정적) จาวา คอมไพล์เลอร์ คอมไพล์เลอร์ จะ ใส่ 암시 적 수신 매개 변수 ที่ ตำแหน่ง 0 หมาย ถึง ถึง ถึง 인스턴스 객체 (แทน ด้วย ด้วย this)

เช่น เช่น มี ถ้า ถ้า int getAge() เวลา เวลา คอมไพล์ ออก ออก มา จะ จะ ได้ getAge(Person p) เพื่อ ที่ จะ ได้ ได้ เรียกเมธอด เรียกเมธอด เรียกเมธอด getage () ใน 컨텍스트 ของ 객체 ใด ๆ ๆ ๆ โดย คอมไพเลอร์ จัด การ ให้ และ ไม่ ยอม ยอม ยอม ให้ เรา ใส่ เอง เอง การ จัด

class Person{
int getAge(){..}

\\คอมไพล์แล้วจะได้แบบนี้นะ(ใน bytecode อยู่ลำดับแรกของพารามิเตอร์)
int getAge(Person p){...}
}


แต่ แต่ แต่ แต่ java 8 เพิ่ม เพิ่ม ฟีเจอร์ ฟีเจอร์ ใหม่ มา ทำ ให้ ให้ เรา สามารถ ประกาศ ประกาศ เมธอด ที่ มี 수신 매개 변수 ได้ (แต่ ตอน 호출 방법 จะ ระบุ ไม่ ไม่ ได้ เดิม เดิม)
สาเหตที่เพิ่มาเพราะเพื่อให้เราเพิ่ม 주석 เข้าไปตรง 수신자 매개변수 ได้

โดย เราสามารถ 반사 เอา 주석 ได้จาก Method.getAnnotatedReceiverType()
class Person {
    int age;

    public int getAge(@MyAnnotation Person this) {
        return this.age;
    }

    public void setAge(Person this, int age) {
        this.age = age;
    }
}

public class App {
    public static void main(String[] args) {
        Person p = new Person();
        p.setAge(10);
        p.getAge();
    }
}



Python을 사용하여 명시적 수신자(self)를 수신할 수 있습니다.

참조::https://blog.joda.org/2015/12/explicit-receiver-parameters.html

좋은 웹페이지 즐겨찾기