別の名前でクラスをインポートする方法はありますか? javax.Cと呼ばれるクラスとJava.Cと呼ばれる別のクラスがある場合のように、C1という名前でjavax.Cをインポートし、C2という名前でJava.Cをインポートできます。
C#では次のようなことができます。
using Sys=System;
またはVb:
Imports Sys=System
いいえ、Javaにはそのようなものはありません。クラスは元の名前でのみインポートでき、インポートしないものすべてに完全修飾名を使用する必要があります(Java.lang
内のクラスと現在のクラスのパッケージを除く)。
要するに、これはJavaでは不可能です。
いいえ。Java 故意に捨てられたtypedef
だと思います。良いニュースは、型が表示されれば、それが何であるかを知っていることです。 t他のエイリアス、または...のエイリアス.
新しいコンセプトが本当に新しい名前に値するなら、それはおそらく新しいタイプにも値するでしょう。
Sys=System
の使用例は、ほとんどのJava devs。
Javaは静的な名前の変更をサポートしていません。問題のオブジェクトを新しいクラス名でサブクラス化することも1つのアイデアです(ただし、ターゲットクラスにfinal修飾子がある場合など、特定の副作用/制限があるため、良い考えではない場合があります。許可されている場合、明示的な型チェックの場合、コードの動作が異なる場合があります。使用される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);}
}
}