请问下怎样才算是一个内部类,最近在看android的Handler方面的东西,有点被搞晕了,一般情况下的内部类我是明白的,但是为什么Handler也算是Activity的一个内部类。
public class MainActivity extends Activity{
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
}
Handler并已经是一个被定义好的类,只不过在使用的时候一般回去重写其中的handleMessage方法,这样就算是一个内部类了吗?
这里主要是想请问下:
内部类的定义是什么?
编译器是怎么去判断一个类是内部类的
ringa_lee2017-04-18 10:49:59
일반적인 내부 클래스를 알고 있다면 가장 기본적인 내부 클래스이기 때문에 이 내부 클래스도 알아야 합니다.
Java 언어의 공식 정의에 따르면 내부 클래스는 다음과 같이 정의됩니다.
중첩 클래스는 자신을 포함하는 클래스의 멤버입니다.
클래스가 다른 클래스의 멤버인 경우 내부 클래스입니다.
내부 클래스는 정적 내부 클래스와 비정적 내부 클래스
위 핸들러는 비정적 내부 클래스입니다. 정적 내부 클래스와 달리 이러한 내부 클래스의 인스턴스를 초기화하려면 먼저 외부 클래스의 인스턴스가 있어야 합니다.
이러한 비정적 내부 클래스에서는 MainActivity.this
을 통해 외부 클래스의 인스턴스를 참조할 수 있습니다. 정적 내부 클래스는 허용되지 않습니다.
컴파일러는 클래스가 다른 클래스 내부에 정의되어 있음을 인식하는 한 해당 클래스가 내부 클래스라는 것을 알 수 있습니다.