有没有办法我们可以用另一个名字导入一个类?就像我有一个名为 javax.C 的类和另一个名为 java.C 的类,我可以在名称 C1 下导入 javax.C 并在名称 C2 下导入 java.C。
我们可以在 C# 中做这样的事情:
using Sys=System;
或 Vb:
Imports Sys=System
有没有办法我们可以用另一个名字导入一个类?就像我有一个名为 javax.C 的类和另一个名为 java.C 的类,我可以在名称 C1 下导入 javax.C 并在名称 C2 下导入 java.C。
我们可以在 C# 中做这样的事情:
using Sys=System;
或 Vb:
Imports Sys=System
不,Java 中没有类似的东西。您只能以其原始名称导入类,并且必须为所有不导入的类使用完全限定名称(除了那些在java.lang
和当前类的包中的类)。
简而言之,不,这在 Java 中是不可能的。
不,我认为 Java故意放弃了typedef
. 好消息是,如果你看到一种类型,你就会知道它是什么。它不能是其他东西的别名;或别名的别名...
如果一个新概念真的值得一个新名字,它很可能也值得一个新类型。
Sys=System
大多数 Java 开发人员不赞成使用 的用法示例。
Java 不支持静态重命名。一个想法是使用新的类名对有问题的对象进行子类化(但由于某些副作用/限制可能不是一个好主意,例如,您的目标类可能具有 final 修饰符。在允许的情况下,如果显式类型检查,代码的行为可能会有所不同使用getClass()
orinstanceof 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);}
}
}