2014-11-29 1 views
0

Существует ситуация:Как получить метод class'es без импорта класса

пакет 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 метод g() без импорта класса A (а затем new A().g())?

Если метод г() была статична, я мог бы написать

public void f() { 
    pak1.A.g(); 
} 
+3

Ваш вопрос выглядит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Можете ли вы описать, почему вы не хотите использовать импорт? – Pshemo

ответ

4

вы можете использовать полное имя класса, как:

pak1.A a = new pak1.A(); 
a.g(); 
0

Как вы сказали, его можно только для статических импорта, но в противном случае его не представляется возможным.

Пример статического импорта ниже, где assertEquals является метод под класс Assert

import static org.junit.Assert.assertEquals; 
3

Короткий ответ: нет, вам нужно импортировать его ,

Сказав это, вы все равно можете выполнить A.g() без импорта, если используете API-интерфейс refection. Имейте в виду, что это добавит излишнюю сложность в ваш код.

+2

'new pak1.A(). G()' - без импорта. –

+0

Вы не можете быть серьезными :-) это не имеет абсолютно никакого значения ... – DaniEll

Смежные вопросы