java,有没有办法,我们可以导入另一个名字的类
有没有办法以其他名字导入一个类? 就像如果我有一个名为javax.C的类和另一个名为java.C的类,我可以在名称C1下导入javax.C,在名称C2下导入java.Class。
我们可以在C#中做这样的事情:
using Sys=System;
或Vb:
Imports Sys=System
不,在Java中没有这样的东西。 您只能以其原始名称导入类,并且必须使用您不导入的全部限定名称(除了java.lang
和当前类的包)。
简而言之,不,在Java中这是不可能的。
在所有情况下都不能这样做,因为有些是最后一堂课,但是你也许可以延续课堂
class RenameTest { private static class MyRenamedClass extends ClassToRename { } MyRenamedClass renamed = new ClassToRename("lol, the class was renamed"); void foo() { renamed.originalFoo(); // because MyRenamedClass doesn't override any // methods, it always defaults to the parent class } }
不,我认为Java 故意放弃typedef
。 好消息是,如果你看到一个types,你知道它是什么。 它不能成为别的别名; 或别名到别名…
如果一个新的概念真的值得一个新的名字,那么它最有可能也是一个新的types。
Sys=System
的使用示例将被大多数Java开发者所诟病。
Java不支持静态重命名。 一个想法是用一个新的类名来描述有问题的对象(但由于某些副作用/限制,可能不是一个好主意,例如你的目标类可能有最终的修饰符)。如果允许的话,如果显式types检查是使用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);} } }