일반적으로 this
생성자에서만 사용 합니다.
this.something
전역 변수와 이름이 같은 경우 매개 변수를 식별하는 데 사용됩니다 (을 사용하여 ).
그러나 this
Java 의 실제 의미 가 this
도트 ( .
) 없이 사용하면 어떻게 될지 알 수 없습니다 .
답변
this
현재 객체를 나타냅니다.
각 비 정적 메서드는 개체의 컨텍스트에서 실행됩니다. 따라서 다음과 같은 수업이 있으면
public class MyThisTest {
private int a;
public MyThisTest() {
this(42); // calls the other constructor
}
public MyThisTest(int a) {
this.a = a; // assigns the value of the parameter a to the field of the same name
}
public void frobnicate() {
int a = 1;
System.out.println(a); // refers to the local variable a
System.out.println(this.a); // refers to the field a
System.out.println(this); // refers to this entire object
}
public String toString() {
return "MyThisTest a=" + a; // refers to the field a
}
}
그런 다음 호출 frobnicate()
에 new MyThisTest()
인쇄됩니다
1 42 MyThisTest a = 42
따라서 여러 가지 용도로 효과적으로 사용합니다.
- 필드와 이름이 같은 다른 것이있을 때 필드에 대해 이야기하고 있음을 분명히하십시오.
- 현재 객체를 전체적으로 참조
- 생성자에서 현재 클래스의 다른 생성자를 호출하십시오.
답변
다음은 here 의 복사 및 붙여 넣기 이지만 this
키워드 의 모든 다른 사용법을 잘 설명 합니다.
정의 : Java의 this
키워드는 사용되는 메소드의 현재 인스턴스를 참조하는 데 사용됩니다.
이를 사용하는 방법은 다음과 같습니다.
-
정적 또는 로컬 변수 대신 인스턴스 변수가 사용됨을 구체적으로 나타냅니다. 그건,
private String javaFAQ; void methodName(String javaFAQ) { this.javaFAQ = javaFAQ; }
여기서 이것은 인스턴스 변수를 나타냅니다. 여기서 로컬 변수의 우선 순위가 높습니다. 따라서 부재
this
는 지역 변수를 나타냅니다. 매개 변수 이름 인 로컬 변수가 인스턴스 변수와 동일하지 않은 경우에 관계없이 인스턴스 변수를this
나타냅니다. -
This
생성자를 참조하는 데 사용됩니다public JavaQuestions(String javapapers) { this(javapapers, true); }
두 개의 매개 변수가있는 동일한 Java 클래스의 생성자를 호출합니다.
-
This
현재 Java 인스턴스를 매개 변수로 전달하는 데 사용됩니다.obj.itIsMe(this);
-
위와 유사하게 현재 인스턴스를 반환하는 데 사용될 수도 있습니다.
CurrentClassName startMethod() { return this; }
참고 : 위 두 가지 점에서 내부 클래스에서 사용되는 경우 원하지 않는 결과가 발생할 수 있습니다. 이것은 외부 인스턴스가 아닌 내부 클래스를 참조하기 때문입니다.
-
This
현재 클래스의 핸들을 얻는 데 사용할 수 있습니다Class className = this.getClass(); // this methodology is preferable in java
이 작업을 수행 할 수 있지만
Class className = ABC.class; // here ABC refers to the class name and you need to know that!
항상 그렇듯이 this
인스턴스와 연관되어 있으며 정적 메소드에서는 작동하지 않습니다.
답변
완료하려면 this
외부 객체를 참조하는 데 사용할 수도 있습니다
class Outer {
class Inner {
void foo() {
Outer o = Outer.this;
}
}
}
답변
특정 객체의 현재 인스턴스를 참조하므로 다음과 같이 작성할 수 있습니다.
public Object getMe() {
return this;
}
일반적인 사용 사례는 this
그림자를 방지하는 것입니다. 다음 예제를 보자.
public class Person {
private final String name;
public Person(String name) {
// how would we initialize the field using parameter?
// we can't do: name = name;
}
}
위의 예에서 매개 변수 값을 사용하여 필드 멤버를 지정하려고합니다. 그것들은 같은 이름을 공유하기 때문에 필드와 매개 변수를 구별 할 수있는 방법이 필요합니다. this
필드를 포함하여이 인스턴스의 멤버에 액세스 할 수 있습니다.
public class Person {
private final String name;
public Person(String name) {
this.name = name;
}
}
답변
Swing ActionListener
에서 현재 인스턴스 (예 : ‘this’) 를 구현 하고 컴포넌트의 ActionListener로 추가 하는 클래스를 작성하는 것이 일반적 입니다.
public class MyDialog extends JDialog implements ActionListener
{
public MyDialog()
{
JButton myButton = new JButton("Hello");
myButton.addActionListener(this);
}
public void actionPerformed(ActionEvent evt)
{
System.out.println("Hurdy Gurdy!");
}
}
답변
효과적으로 “현재 컨텍스트의 개체에 대한 참조”입니다. 예를 들어 “this object”를 인쇄하려면 다음과 같이 작성하십시오.
System.out.println(this);
“전역 변수”의 사용법은 다소 벗어난 점에 유의하십시오. 사용하는 경우 this.variableName
정의에 따라 전역 변수 가 아닙니다 .이 특정 인스턴스에 특정한 변수입니다.
답변
programming.guide에서 기사 인용하기 :
this
이 두 가지 용도를 자바 프로그램을.
1. 현재 객체에 대한 참조
이 경우 구문은 일반적으로 다음과 같습니다.
this.someVariable = someVariable;
이 사용 유형은 여기에 설명되어 있습니다 : ‘this’참조 (예제 포함)
2. 다른 생성자를 호출하려면
이 경우 구문은 일반적으로 다음과 같습니다.
MyClass() {
this(DEFAULT_VALUE); // delegate to other constructor
}
MyClass(int value) {
// ...
}
이 사용 유형은 여기에 설명되어 있습니다. this (…) 생성자 호출 (예제 포함)