2015-03-05 3 views
1

Скажем, у нас есть проект, расположенный в папке project с источниками в project/src.Доступ к классам верхнего уровня из Java-пакета

У нас есть пакет package на project/src/package и классы

  • TopClass в project/src/TopClass.java и
  • PackageClass в project/src/package/PackageClass.java.

Теперь мы хотим, чтобы вызвать конструктор TopClass внутри PackageClass, но сказал, что конструктор (хотя объявлен public), кажется, не невидимым внутри пакета.

Нужно ли нам импортировать его каким-то образом? Как мы можем получить к нему доступ?

+0

'проекта/src/PackageClass.java' или 'project/src/package/PackageClass.java'? –

+0

@BenWin Последний, конечно. Я починил это. –

ответ

1

Указывается, что ошибка времени компиляции импортирует тип из неназванного пакета.

Так АРХИВ, что вы пытаетесь сделать, вы должны использовать какой-то косвенный доступ к классу, как отражения API:

Class sampleClass = Class.forName("SampleClass"); 
Method sampleMethod = sampleClass.getMethod("sampleMethod" , new Class[] { String.class }); 
sampleMethod.invoke(sampleClass.newInstance(), "It works!"); 

с классом пакета по умолчанию:

public class SampleClass { 
    public void sampleMethod(String str) { 
     System.out.println(str); 
    } 
} 
+0

У меня есть желание снизить этот ответ только за последствия его содержания. (+1) –

+0

:). По крайней мере, вы не тратите больше времени, пытаясь решить эту проблему. Может быть, вы могли бы принять ответ, поэтому мы можем рассматривать эту тему как решенную. –

+0

Да, спасибо! Ваш ответ не предлагает полного решения или ссылки на решение. Я думаю, вы должны включить это, иначе он не будет полностью разрешен. –

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