是否引用包含变量的包?JAVA
我可以用变量名引用java中的特定包吗 假设我想访问嵌套结构中的方法是否引用包含变量的包?JAVA,java,variables,packages,Java,Variables,Packages,我可以用变量名引用java中的特定包吗 假设我想访问嵌套结构中的方法foo(),位于stuff.bitchie.jelly.sausages.foo(),(其中jelly是一个包,sausages是一个类) 我是否可以设置变量var,以便var=stuff.bitchie.jelly.sausages,然后通过以下方式访问foo(): var.foo()?(或有点类似) 编辑: 关于导入,如果我想使用许多不同的foo()方法,有什么建议吗,例如: stuff.biscuit.jelly.cher
foo()
,位于stuff.bitchie.jelly.sausages.foo()
,(其中jelly
是一个包,sausages
是一个类)
我是否可以设置变量var
,以便var=stuff.bitchie.jelly.sausages
,然后通过以下方式访问foo()
:
var.foo()
?(或有点类似)
编辑:
关于导入,如果我想使用许多不同的foo()方法,有什么建议吗,例如:
stuff.biscuit.jelly.cherry.foo()
stuff.biscuit.jelly.apple.foo()
stuff.biscuit.jelly.strawberry.foo()
?
编辑:建议的副本不相关。它指的是对变量使用与包相同的名称。我指的是带有变量的嵌套包。不,你不能这样做。您所能做的最好的事情是将您的方法定义为静态的,并对相应的类进行静态导入。然后您可以直接调用该方法 差不多
import static stuff.biscuit.jelly.Sausages.*;
然后在代码中使用
foo();
您可以使用反射获取对方法的引用,并使用invoke(…)调用该方法。假定“香肠”是香肠类的一个实例:
Class cl = sausages.getClass();
Method myMethod = cl.getMethod("myMethod");
myMethod.invoke(params);
尽管一切都说了又做了,为什么不直接导入包/类并以这种方式调用方法呢 没有。你不能!您可以通过输入包中的所有类来减少工作量,方法是说
import-package.*
;抱歉,我不确定“香肠”是否应该是一个类,或者您是否询问是否可以调用包上的方法……无论哪种方式。如果是类,他可以使用反射来获取类对象,调用newInstance(),然后甚至使用反射来调用该方法。或者转换到某个接口来调用foo()。@Prashant No,这个问题与其他问题有关。由于不同包中不同类中有多个foo(),因此,请在类/实例级别导入类并调用方法,而不是进行静态导入。反思可能会回答最初的问题,但不是一种推荐的方式来完成你似乎想要完成的事情。那时你正处于困境之中。除非使用反射技术,否则必须使用完全限定的包名来调用该方法。但除非绝对必要,否则不应使用反射。