인터페이스는 참조 할 수 있지만 객체는 작성할 수 없습니다. 그러나 우리는 어떻게 Thread 생성자에 새로운 Runnable()을 전달할 수 있는가? 내가 아는 한 콘서트는 새로운 Class_Name()이 객체입니다.스레드에 대한 혼란
Thread t = new Thread(new Runnable(){});
인터페이스는 참조 할 수 있지만 객체는 작성할 수 없습니다. 그러나 우리는 어떻게 Thread 생성자에 새로운 Runnable()을 전달할 수 있는가? 내가 아는 한 콘서트는 새로운 Class_Name()이 객체입니다.스레드에 대한 혼란
Thread t = new Thread(new Runnable(){});
여기에서 사용 된 속임수는 anonymous classes입니다. 기본적으로 Runnable
을 구현하는 새로운 익명 클래스의 개체를 만듭니다.
더 좋은 예는이 될 것입니다 :
Thread t = new Thread(new Runnable(){
@Override
public void run() {
// Code here
}
});
우리는 인터페이스의 참조를 만들 수 있지만 사실이 아니다
개체 수 없습니다. classa
가 참조하는 동안
ClassA classa = new ClassA();
이
는를 ClassA에 대한 새로운 인스턴스를 만들 것입니다.는하지만 어떻게 우리가 t
가 참조하는 스레드의 인스턴스를 만들 것입니다 스레드 생성자
Thread t = new Thread(new Runnable(){});
이 새의 Runnable()를 전달할 수 있습니다. 새로운 Runnable() {}은 anonymous class이라고합니다. 인스턴스가 생성 되었기 때문에 참조는 생성자에 전달되지만 나중에 코드에서 참조 할 수 없습니다.
하지만이 줄을 사용하면 컴파일 오류가 발생합니다. run 메소드를 대체해야합니다.
Thread t = new Thread(new Runnable(){
@Override
public void run(){
}
});
"인스턴스가 생성되었지만 참조가 없으므로"아무것도 참조 할 수 없으므로 질문에 의미가 없습니다. - 사실이 아니다. Runnable에 대한 참조가 아니라면 Thread 생성자가 전달되는 것은 무엇입니까? – Ingo
@Ingo 네, 맞아요. 어쩌면 내 설명에 결함이있다. 생성자는 참조를 얻지 만 그 이후에 사용할 수있는 참조는 없습니다. 나는 아직도 이와 같은 것들을 설명함으로써 고투한다. –
질문에 "참조"가 아니라 "인스턴스"를 말합니다. 사람들이 당신을 이해하기 원한다면 올바른 어휘를 사용하는 것이 매우 중요합니다. 클래스/추상 클래스/인터페이스 –