programing

클래스 이름과 함께 "this" 사용

goodsources 2023. 2. 6. 23:28
반응형

클래스 이름과 함께 "this" 사용

Android 프로그래밍을 하고 있으며 Intents에 대해 배우고 있을 때 C# 훈련받은 내 정신으로는 펑키해 보이는 컨스트럭터를 보았습니다.문의처:

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);

두 파라미터 모두 처음 보는 파라미터입니다.클래스 이름에 정적 ".this"가 있는 이유는 무엇입니까?자바 제품인가요 안드로이드 제품인가요?'이것'을 말하는 것과 같은 것으로 추측하고 있습니다.저는 지금 이 상황에 있기 때문입니다.CurrentActivity클래스 이름 자체에서 "this"를 어떻게 불러낼 수 있는지 모르겠습니다.또, 「.class」라고 하는 것은, C#에 친숙한 「.class」라고 하는 것은, 성찰에 사용하는 것 같습니다만, 이것에 대한 어떠한 통찰도 환영입니다.

감사해요.

보통 사용할 수 있는 것은this.하지만 때로는.this내적 계급에 대한 언급...예를 들어 다음과 같습니다.

Button button = (Button)findViewById(R.id.ticket_details_sell_ticket);
button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // it will be wrong to use only "this", because it would
        // reference the just created OnClickListener object
        Intent login = new Intent(ClassName.this, Login.class);
        startActivityForResult(login, LOGIN_REQUEST);
    }
});

한 번에 하나씩:

첫 번째 구문은 수식어라고 불립니다.구문의 목적은 내부 클래스(일반적으로 어나니머스 내부 클래스)에 속해 있으며 다음 명령어를 참조하는 경우입니다.this보다 외계층의this내적 계급의"qualified this"는 다음과 같은 상황에서만 사용할 수 있습니다.this애매할 것 같아요.JLS의 따옴표는 "It's compile-time error (표현이 클래스 T 또는 T 자체의 내부 클래스가 아닌 클래스 또는 인터페이스에서 발생하는 경우 컴파일 시간 오류입니다)"입니다.

두 번째 구성 요소는 다음과 같습니다.class literal는 해당 유형을 나타내는 Class 객체를 참조하는 방법입니다.모든 컨텍스트에서 사용할 수 있습니다.

"Classname.this" 구문은 내부 클래스용입니다."Outerclass" 유형의 둘러싸인 인스턴스를 참조하려면 "Outerclass.this"로 지정합니다.

NextActivity.class는 단순히 클래스 "NextActivity"를 설명하는 클래스 개체입니다.

NextActivity.class자바 방식으로typeof(NextActivity)C#에서

ClassName.this는 내부 클래스에서 외부 클래스의 현재 인스턴스를 참조하기 위해 사용됩니다.

<ClassName>.this

키워드 this는 nest 클래스인스턴스를 나타내기 때문에 네스트된 클래스에서 사용되는 것은 엔클로징 클래스의 현재 인스턴스를 참조합니다.

퍼블릭 클래스 Siht {클래스 네스트siht {void demo This() {System.err.println()this' is an instance of: " + 
                            this.getClass().getName());
            System.err.println("Siht.this'는 다음 중 하나입니다.Siht.this.getClass();
}}

void demoThis() {
    new java.lang.Object() {
        void demoThis() {
            System.err.println("`this' is an instance of: " + 
                            this.getClass().getName());
            System.err.println("`Siht.this' is an instance of: " +
                            Siht.this.getClass().getName());
        }
    }.demoThis();
    new NestedSiht().demoThis();
}

public static void main(String [] args) {
    new Siht().demoThis();
}

}

"MainActivity.this"를 사용할 때 오브젝트가 아닌 클래스를 참조하는 것처럼 보여서 혼란스러울 뿐입니다.실제로 "this"를 사용하면 Java se 설명서에 나와 있듯이 항상 현재 개체를 참조합니다.

https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

인스턴스 메서드 또는 생성자 내에서 현재 개체(메서드 또는 생성자가 호출되는 개체)에 대한 참조입니다.이를 사용하여 인스턴스 메서드 또는 생성자 내에서 현재 개체의 모든 멤버를 참조할 수 있습니다.

통사적으로 특이할 뿐이죠

언급URL : https://stackoverflow.com/questions/4080868/using-this-with-class-name

반응형