日期:2014-05-20  浏览次数:20631 次

当内部类被static修饰后,内部类的的构造方法为什么可以使用this?
package com.yjb;

import java.awt.event.MouseAdapter;

import javax.swing.JButton;

public class Test {

public static void main(String[] args) {
JButton b = new JButton();
b.addMouseListener(new MouseMonitor(0));
}

static class MouseMonitor extends MouseAdapter {
private int j;

public MouseMonitor(int j) {
this.j = j;  //为什此处可以使用this
}
}
}

------解决方案--------------------
表达的不一定清楚,楼主参考一下:
在静态的方法里是不允许出现用于代表自身对象的 this 的。
内部类是可以生成对象的,这里的this指生成的内部类对象自己。
如果楼主在这个内部类里加一个静态方法,在那个方法里不必能出现 this 的。
------解决方案--------------------
类都可以用this,静态内部类与普通内部类的区别在于前者不能访问外部类的非静态成员。
------解决方案--------------------
静态成员不能访问非静态成员
内部类是静态的  但是它里面的方法又没有访问外部的非静态的方法或对象
此处的 this 代表 内部类对象
所以这样写是对的