java,有没有一种方法可以用另一个名称导入一个类

发布于 2024-11-03 02:15:46 字数 234 浏览 7 评论 0原文

有没有办法可以用另一个名称导入一个类? 就像如果我有一个名为 javax.C 的类和另一个名为 java.C 的类,我可以在名称 C1 下导入 javax.C,并在名称 C2 下导入 java.C。

中执行类似的操作:

using Sys=System;

我们可以在 C#或 Vb

Imports Sys=System

is there a way we can import a class under another name?
Like if i have a class called javax.C and another class called java.C i can import javax.C under the name C1 and import java.C under the name C2.

We can do something like this in C#:

using Sys=System;

or Vb:

Imports Sys=System

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

拒绝两难 2024-11-10 02:15:46

不,Java 中没有这样的东西。您只能以原始名称导入类,并且必须对所有未导入的类使用完全限定名称(java.lang 中的类和当前类的包中的类除外)。

No, there is nothing like that in Java. You can only import classes under their original name, and have to use the fully qualified name for all that you don't import (except those in java.lang and the current class's package).

下雨或天晴 2024-11-10 02:15:46

简而言之,不,这在 Java 中是不可能的。

To be short, no, this isn't possible in Java.

你另情深 2024-11-10 02:15:46

不。我认为 Java故意放弃了typedef。好消息是,如果您看到某种类型,您就知道它是什么。它不能是其他东西的别名;或者别名的别名...

如果一个新概念确实值得一个新名称,那么它很可能也值得一个新类型。

大多数 Java 开发人员都会对 Sys=System 的使用示例感到不满。

No. I think Java deliberately ditched typedef. The good news is, if you see a type, you know what it is. It can't be an alias to something else; or an alias to an alias to ...

If a new concept really deserves a new name, it most likely deserves a new type also.

The usage example of Sys=System will be frowned upon by most Java devs.

灯角 2024-11-10 02:15:46

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);}
  }

}

Java doesn't support static renaming. One idea is to subclass object in question with a new classname (but may not be a good idea because of certain side-effects / limitations, e.g. your target class may have the final modifier. Where permitted the code may behave differently if explicit type checking is used getClass() or instanceof ClassToRename, etc. (example below adapted from a different answer)

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);}
  }

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文