java中的类或方法别名
我有很长的java类和方法名称
LONGGGGGGGGGGGGGGGClass.longggggggggggggggggggggggggMethod();
我想把它别名为gm();
在另一个class级可以做到这一点?
没有。
用一个你最喜欢的名字来包装它。
首先,你应该很lessinput类名。 你可能有这样的事情:
import DamnLongPackageNameThatIDontLikeTyping; class MyCoolClass() { DamnLongClassNameThatIDontLikeTyping dlc=new DamnLongClassNameThatIDontLikeTyping(); dlc.this(); dlc.that(); dlc.tOther(); dlc.damnLongAnnoyingMethodNameStillHasToBeTypedEveryTime(); }
好吧,这不是很好,但是你不应该经常input整个class级的名字,只是当你第一次申报的时候。 和包导入,所以你不必input: DamnLongPackageNameThatIDontLikeTyping.DamnLongClassNameThatIDontLikeTyping
每次。
不过,这可能会让人烦恼。 进入编辑器。 如果您不使用Eclipse,Netbeans或IntelliJ,那么您现在需要停止阅读并安装它 – 加载项目。 我会等….
认真。 去实现它(梦想);去得到它(东西。 如果没有它,其余的事情就不会有趣。
现在,真正整洁的事情是,要获得我上面input的内容,你只需要这样做:
class MyCoolClass() { DLC<ctrl-space>
input后,你的文件将如下所示:
import DamnLongPackageNameThatIDontLikeTyping; class MyCoolClass() { DamnLongClassNameThatIDontLikeTyping<your cursor here>
请注意,你没有input该死的任何东西,只是DLC它想出了你想要导入什么类,添加了一个导入,并在那里卡住了类。 (如果有多个匹配,您可能必须从类列表中进行select)。
最重要的是,一旦你有一个名为dlc实例化的对象,你可以input:
dlc.<ctrl-space>
并获得该类中的方法列表。 不要再input方法名称。 如果在你的类中有一个kagillion方法,请不要滚动它们,input: dlc.dLAM<ctrl-space>
来获得dlc.damnLongAnnoyingMethodNameStillHasToBeTypedEveryTime();
永远不要再input长方法名称。
没有长方法名称,没有长类名称,没有长包名称。 然而,你会得到非常可读的方法,包和类。 这就是为什么Java程序员倾向于使用这些长名称,我们也试图记住,我们正在为下一个人编写代码,并不希望他必须运行我们的代码,试图找出什么:
gm();
指的是 – 迫使他们记住,在这个类中它意味着GreatClass.motion
,但在下一个类中,它意味着Grey.modifyColor
– 这将是非常残酷的。
静态types的Java在编辑器中放置了大量的权力。 它可以做你甚至无法用dynamictypes语言做梦的事情,你应该发挥你的语言的优势,成为一个有效的程序员 – 不要试图把每种语言都融入到使用另一种语言。
请注意,这也适用于静态方法以及…
DLC<ctrl-space>.dLM<ctrl-space>
将被DamnLongClass.damnLongMethod()
调用所取代,甚至可以在9个按键中包含你的parens。
Java语言不提供别名机制。
但是,您可以通过以下几种方式来缓解您的“痛苦”:
-
对于静态方法,您可以使用静态导入来避免具有长名称。
-
你可以使用一个简短的名称和简短的方法名称来声明你自己的便利类,然后实现静态方法来委托给真正的方法,如:
public static void shortName(…){VeryLongClassName.veryLongMethodName(…); }
-
对于常规的方法,你可以实现一个Wrapper类,或者一个具有更方便的方法名称的子类。 但是,两者都有维护和(取决于您的JVM)性能方面的缺点。
但让我们退后一步:
-
如果真正的问题是你只是厌倦了input长名字,一个解决scheme是使用一个现代的IDE,当你键入它们时,支持完成名称。 比如@ BillK的回答。
-
如果真正的问题是你厌倦了漫长的名字占用大量的空间,一个解决办法是使用更宽的屏幕/更长的线。 大多数显示器都足够大,可以显示120个字符(或更多)宽的源代码,不会造成眼睛疲劳。
-
如果上述两个都不是答案,可以考虑重构有问题的代码以使用合理的(即较短的)类和方法名称。 现代IDE再一次能够快速安全地处理这种重构。
最后一点,我认为过长的类名和方法名称是不好的风格 。 国际海事组织,你有理由花时间自行解决,或者build议他们修复,特别是如果他们构成某个图书馆或模块的“公共”API。
其实有一种方法可以得到你以后的一半。
看你的例子:
LONGGGGGGGGGGGGGGGClass.longggggggggggggggggggggggggMethod();
看来, longggggggggggggggggggggggggMethod
是静态的。 (如果不是的话,你可以用一个variables名作为前缀,这个variables名就是你控制的大小)。
您可以使用Java的静态导入function来“别名”或将 LONGGGGGGGGGGGGGGGClass
的静态方法导入到您自己的类的名称空间中。 而不是上面的代码,你只需要写这个:
longggggggggggggggggggggggggMethod();
您可以使用inheritance或封装来包装原始类。
class g extends LONGCLASS { void a() { super.loooonnng(); } }
要么
class g { private LONGCLASS lc; void a() { lc.loooonnng(); } }
public class Shorten { public static final Shorten m = new Shorten(); public int a(params) { return some_method_with_long_name(params); } public void b() { // whatever static code you want } }
在你的主代码中:
import static mypackage.Shorten.m; ... int res = ma(params); mb(); ...
这样,你可以有效地别名任何你想要的静态的东西,同时避免警告。