如何在不导入类的情况下获取类的方法

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 类的情况下获得吗?

Kivymd:如何在不创建自定义类的情况下在列表项中添加复选框?

在不使用受保护的情况下处理抽象类的正确方法是啥?

如何在不使用 System.Net 类的情况下在 C# 中发送 HTTP 请求? [复制]