gpt4 book ai didi

java - Java 中是否有与 Python 的 `type(name, bases, dict)` 等效的值?

转载 作者:行者123 更新时间:2023-12-01 12:20:07 25 4
gpt4 key购买 nike

如果我现在仅通过反射在运行时创建父类,如何在 Java 中动态创建类?

// I only know what ParentClass is at runtime
// but I know that ParentClass implements SomeInterface.
public class MyClass extends ParentClass implements SomeInterface {
// I know the method I want to override,
// and that ParentClass has a no-argument constructor.
@Override
public int method(int arg) {
return 42 * arg;
}
}

例如在Python中你可以使用

MyClass = type("MyClass", (ParentClass,), {
'method': lambda self, arg: 42 * arg
})
# or even easier
class MyClass(ParentClass):
def name(self, arg):
return 42 * arg

那么,有没有相当于 Python 的 type(name, bases, dict) 的东西?在Java 中?

最佳答案

在 java 中没有直接/简单的方法可以做到这一点。我们需要创建类文件并将其加载到类加载器中。你可以引用下面的回答Writing and implementing new Java class files during run-timeASM、CGLIB、JAVASSIST 等多个第三方库有助于动态创建代码。

关于java - Java 中是否有与 Python 的 `type(name, bases, dict)` 等效的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26728066/

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