我已经问过类似的问题,但我没有得到答案,所以我试图直接在这里并提供尽可能多的细节。基本上我有5个类,其中一个扩展了JFrame ,它是名为TigBase的主类,第二个扩展了JPanel,它被称为Cont,第三、第四和第五个没有扩展,但它们具有相同的方法:
public void paintah(Graphics g){
g.fillRect(20,20,20,20);
所以JPanel应该绘制它的图形。但我们也不知道这些类的名称。类的名称作为公共 var存储在Cont类中
public static ArrayList<String> classes = new ArrayList<String>();
所以我也有一个方法:
public void paintComponent(Graphics g){
是的,这些类的实际名称是Cutscene0、Cutscene1、Menu2 我希望Cont类绘制它们的图形,但无法做到这一点。如果我“知道”类的名称,我会这样做:
Cutscene0 cut = new Cutscene0();
public void paintComponent(Graphics g){
super.paintComponent(g);
Cutscene0 cut = new Cutscene0();
cut.paintah(g);
但是我可能有更多相同类型的未知类,所以我需要将它们存储在 arraylist 中。我确实试过这个:
for(int i = 0; i<classes.size;i++){
Class.forName(classes.get(i)).getMethod("paintah", Graphics.class).invoke(g);
但这给了我一个例外
java.lang.IllegalArgumentException: java.lang.ClassCastException@2c80fb85
所以,是的,我真的需要解决它,我整天坐着研究如何做到这一点并尝试了不同的东西,但它们只是不起作用..希望你能帮忙!