【问题标题】: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 吗?

标签: java package visibility


【解决方案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;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-12-04
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 2019-12-18
        • 1970-01-01
        • 2020-11-06
        • 2012-02-09
        • 2012-08-14
        相关资源
        最近更新 更多