gpt4 book ai didi

java动态判断当前执行的类

转载 作者:行者123 更新时间:2023-12-02 11:40:39 25 4
gpt4 key购买 nike

我正在尝试编写一个可序列化的 lambda,它可以调用运行它的对象实例中的方法。

我将在实例化它之后立即将此 lambda 传递给将运行它的对象实例,但因为我想序列化这些包含 lambda 的对象,所以我需要一种动态确定对对象实例。

如果 currentClass() 方法存在,我想要执行以下操作。

Runnable r = (Runnable & Serializable)() -> {
try {
// currentClass() doesn't exist
Class curClass = Thread.currentThread().currentClass();
Method setCol = curClass.getMethod("setColor", Class.forName("Color"));
setCol.invoke(curClass, Color.BLACK);

} catch (NoSuchMethodException e | ClassNotFoundException e
| IllegalAccessException e | IllegalArgumentException e
| InvocationTargetException e) {
e.printStackTrace();
}
}

MySquare sq = new MySquare();
sq.setRunnable(r);

sq.runRunnable(); // calls r.run()

为了澄清,我想序列化 sq。然后,当我从 .ser 文件中读取 recreate sq 时,我希望能够执行 sq.runRunnable()

最佳答案

通过更改 Runnable 中的 lambda 对其进行排序到 Consumer<MySquare>

例如Consumer<MySquare> r = (sq) -> {sq.setColor(Color.BLACK)}

并更改 runRunnable()现在执行 r.accept(this) 的方法

关于java动态判断当前执行的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48592906/

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