gpt4 book ai didi

调用方法时出现 Java ClassCastException

转载 作者:行者123 更新时间:2023-11-30 08:12:51 25 4
gpt4 key购买 nike

我正在制作一个游戏引擎,目前正在研究该程序的组件部分。我希望用户能够为组件提供特殊的渲染方法,因此我使用反射和其他一些东西。正如标题所示,这会引发 ClassCastException,我不明白为什么。代码如下:

public class LComponent {
public Vector pos, size;
private Class renderClass = getClass();
private Method renderMethod;

public LComponent(Vector pos, Vector size) {
try {
renderMethod = renderClass.getDeclaredMethod("defaultRender",
Graphics.class);
renderMethod.setAccessible(true);
} catch (NoSuchMethodException | SecurityException e) {
e.printStackTrace();
}
}

public void render(Graphics g) {
try {
renderMethod.invoke(renderClass, g);
} catch (Exception e) {
e.printStackTrace();
}
}

public void defaultRender(Graphics g) {
g.drawRect((int) pos.getX(), (int) pos.getY(), (int) size.getX(),
(int) size.getY());
}
}

最佳答案

而不是

renderMethod.invoke(renderClass);

你需要

renderMethod.invoke(this, g);

虽然你可以不加思考地写出所有这些,但要简单得多。

<小时/>

I want the class to be class to be customizable

我建议你使用一个接口(interface)

interface Renderable {
void render(Graphics g);
}

public class LComponent implements Renderable {
// can be anything which implements Renderable
final Renderable renderable; // initialise in the constructor

public void render(Graphics g) {
renderable.redner(g);
}

}

关于调用方法时出现 Java ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30122553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com