class SaveAction extends AbstractAction { public SaveAction(String actionName) {
super(actionName);
} public void actionPerformed(ActionEvent e) {
try {
this.getClass().newInstance();
System.out.println("Fuck!!!");
// SaveAsAction ss =new SaveAsAction();
} catch (InstantiationException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
// SaveAsAction ss =new SaveAsAction();
}
}
2008-3-10 15:15:54 main.MainFrame$SaveAction actionPerformed
严重: null
java.lang.InstantiationException: main.MainFrame$SaveAction
at java.lang.Class.newInstance0(Class.java:340)内部类是不是不能被反射出来,该怎么做呢? this.getClass().newInstance();
super(actionName);
} public void actionPerformed(ActionEvent e) {
try {
this.getClass().newInstance();
System.out.println("Fuck!!!");
// SaveAsAction ss =new SaveAsAction();
} catch (InstantiationException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
// SaveAsAction ss =new SaveAsAction();
}
}
2008-3-10 15:15:54 main.MainFrame$SaveAction actionPerformed
严重: null
java.lang.InstantiationException: main.MainFrame$SaveAction
at java.lang.Class.newInstance0(Class.java:340)内部类是不是不能被反射出来,该怎么做呢? this.getClass().newInstance();
学习ING
public class Outer{
public class SaveAction extends AbstractAction { public SaveAction(){
super();
}
public SaveAction(String actionName) {
super(actionName);
} public void actionPerformed(ActionEvent e) {
try { System.out.println(e.getActionCommand());
SaveAction sa = getClass().newInstance();
} catch (InstantiationException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
还是抛异常,不管是是否定义为public....
2008-3-10 19:41:41 main.MainFrame$SaveAction actionPerformed
严重: null
java.lang.InstantiationException: main.MainFrame$SaveAction另外使用Class.forName("内部类名")这样也不行。它会说找不到这个类,因为内部类的方式是Outer$Inner。
public class InnerTest { public class Inner {
public void say() {
System.out.println("inner");
}
}
}public class Test01 {
public static void main(String[] args) {
try {
Class<Inner> in = Inner.class;
Inner it = (Inner) in.getConstructors()[0].newInstance(new InnerTest());
it.say();
} catch (Exception e) {
e.printStackTrace();
}
}
}