클래스 이름과 함께 "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
'programing' 카테고리의 다른 글
MS SQL Server의 Oracle "Dual" 테이블과 동등한 것은 무엇입니까? (0) | 2023.02.10 |
---|---|
이 쿼리는 정말 안전하지 않은가요? (0) | 2023.02.06 |
도커에 동일한 영속 스토리지를 사용하는 2개의 mariadb 인스턴스 (0) | 2023.02.06 |
MariaDB - innodb_log_file_size를 찾을 수 없습니다. (0) | 2023.02.06 |
skikit 학습 선형 회귀 분석에서 p-값(중요도) 찾기 (0) | 2023.02.06 |