Java不支持静态重命名。一个想法是使用新的类名对相关对象进行子类化(但由于某些副作用/限制可能不是一个好主意,例如,您的目标类可能具有最终修饰符。在允许的情况下,如果显式类型检查,代码可能表现不同使用getClass()或instanceof ClassToRename等(以下示例改编自不同的答案)
class MyApp {
public static void main(String[] args) {
ClassToRename parent_obj = new ClassToRename("Original class");
MyRenamedClass extended_obj_class_renamed = new MyRenamedClass("lol, the class was renamed");
// these two calls may be treated as the same
// * under certain conditions only *
parent_obj.originalFoo();
extended_obj_class_renamed.originalFoo();
}
private static class ClassToRename {
public ClassToRename(String strvar) {/*...*/}
public void originalFoo() {/*...*/}
}
private static class MyRenamedClass extends ClassToRename {
public MyRenamedClass(String strvar) {super(strvar);}
}
}