如何在不导入类的情况下获取类的方法
Posted
技术标签:
【中文标题】如何在不导入类的情况下获取类的方法【英文标题】:How to get class'es method without importing class 【发布时间】:2015-01-27 22:49:28 【问题描述】:有一种情况:
包 pak1 包含一些类
package pak1;
public class A
public void g()
还有另一个包 pak2
package pak2;
public class B
public void f()
// here I want to call method g() from class A
有没有什么方法可以在不导入类A
(然后是new A().g()
)的情况下调用类的A
方法g()
?
如果方法 g() 是静态的,我可以写
public void f()
pak1.A.g();
【问题讨论】:
您的问题类似于XY problem。你能描述一下为什么不想使用 import 吗? 【参考方案1】:您可以使用完全限定的类名,例如:
pak1.A a = new pak1.A();
a.g();
【讨论】:
【参考方案2】:简短回答:不,您需要导入它。
话虽如此,如果你使用refection API,你仍然可以在不导入的情况下执行A.g()
。请记住,这会给您的代码增加不必要的复杂性。
【讨论】:
new pak1.A().g()
- 没有导入。【参考方案3】:
正如你所说,它仅适用于静态导入,否则不可能。
静态导入示例如下,其中 assertEquals 是 Assert 类下的方法
import static org.junit.Assert.assertEquals;
【讨论】:
【参考方案4】:我发现 SMA 的回答有点令人困惑。这是另一种可能有助于解释语法的编写方式:
// Use Scanner.nextLine() without import
class InputClass
public static String getString()
String bob = new java.util.Scanner(System.in).nextLine();
return bob;
【讨论】:
以上是关于如何在不导入类的情况下获取类的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何在不通过 Interface Builder 获取 UIButton 类的背景的情况下添加图像?
Laravel 6 Backpack 4.0:如何在 FormRequest 类中获取当前页面 ID,或者我可以在不使用 FormRequest 类的情况下获得吗?