У меня есть класс Main. У меня также есть другой класс, который я сделал (назовите его классом «Runner»). Тем не менее, я хотел бы иметь больше классов Runner (разница между ними является модификацией каждого соответствующего класса Runner другими людьми). Можно ли иметь каждый класс Runner в отдельных папках и иметь папки в том же каталоге, что и основной класс, а затем ссылаться на объекты Runner в классе Main, как если бы они были классом в том же каталоге, что и основной класс?Как ссылаться на классы Java Object в отдельных папках
ответ
Да, этот вопрос поражает меня, как будто вы просматриваете Java как php или ruby и т. Д., Что не совсем точно. С Java каждый класс имеет то, что называется «Полностью квалифицированное имя», которое происходит из папки, в которой она хранится (например, Python). Поскольку Java компилируется, вы сообщаете компилятору , где нужно найти код, необходимый для компиляции java-файла, вместо того, чтобы помещать ссылку на эти необходимые файлы в верхней части файла (например, заявление require
в php), которое было бы инструкция для переводчика .
Скажем, например, вы имели структуру, как это:
src/
Main.java
/runner1
SomeRunner.java
/runner2
SomeOtherRunner.java
Main.java
public class Main{
public static void main(String[] args){
//use SomeRunner
runner1.SomeRunner.run();
//use SomeOtherRunner
runner2.SomeOtherRunner.run();
}
}
SomeRunner.java
package runner1;
public class SomeRunner{
public void run(){ ... }
}
SomeOtherRunner.java
package runner2;
public class SomeOtherRunner{
public void run(){ ... }
}
В качестве альтернативы, вы можете использовать импорт:
Main.java
import runner1.SomeRunner;
import runner2.SomeOtherRunner;
public class Main{
public static void main(String[] args){
//use SomeRunner
SomeRunner.run();
//use SomeOtherRunner
SomeOtherRunner.run();
}
}
В этом примере я выбрал произвольные имена пакетов (runner1
и runner
), который является технически хорошо. Однако в лучших практиках указано, что ваши имена пакетов должны быть обратным доменным именем вашего проекта (т. Е. com.myproject
), чтобы избежать столкновений с другими библиотеками и т. Д. Вы можете узнать больше об этом here. Когда вы компилируете свой класс Main
, вам нужно будет предоставить файлы SomeRunner
и SomeOtherRunner
компилятору, чтобы он знал, где их найти.
Благодарим вас за предложения, но я не думаю, что это точно соответствовало бы тому, что я имел в виду.Я хочу, чтобы иметь возможность рассматривать каждый из классов Runner как один класс Runner, по существу, иметь возможность хранить их все в структуре данных, такой как массив или ArrayList, и использовать цикл for, чтобы увидеть, как все они выполняются в одиночный осуществление. Я пытался сделать это с вашими предложениями, и я даже экспериментировал с ними, но безрезультатно. Есть ли какие-либо предложения, которые вы хотели бы решить? – Noah
- 1. Как ссылаться на файлы в разных папках
- 2. Scala не может ссылаться на классы Java
- 3. ветви git в отдельных папках
- 4. Модифицировать модели в отдельных папках
- 5. Linking изображения, которые находятся в отдельных папках
- 6. Как ссылаться на классы в Swift?
- 7. Как организовать классы Java Business object
- 8. Как создать файл jar из проекта, расположенного в отдельных папках?
- 9. Как ссылаться на контроллеры ember.js, которые находятся во вложенных папках?
- 10. Django: Сохранение пользовательских загрузок в отдельных папках
- 11. Переименование файлов последовательно в двух отдельных папках
- 12. Сохранение файлов на основе имени файла в отдельных папках
- 13. Можно ли ссылаться на случайные классы?
- 14. Частичные классы в отдельных dlls
- 15. Как разместить классы в отдельных файлах (C++)
- 16. Как ссылаться только на используемые классы в документации Doxygen
- 17. Как я могу ссылаться на классы в исполняемом файле .net?
- 18. Как ссылаться на классы Windows Runtime в статической библиотеке?
- 19. Как ссылаться на общие классы и методы в документации xml
- 20. Как явно ссылаться на основные классы в Ruby?
- 21. Как распаковать файлы, которые находятся в отдельных папках?
- 22. Нужно ли сохранять классы, импортируемые в java, в отдельных файлах?
- 23. Как сохранить классы в соответствующих папках в приложении Windows?
- 24. Как ссылаться на внешнюю библиотеку в Java?
- 25. Как ссылаться на ресурс в Java?
- 26. Как ссылаться на класс java в avro
- 27. Как ссылаться на локальное изображение в java?
- 28. Как ссылаться на другой объект в Java?
- 29. как ссылаться на библиотеку jar в Java
- 30. Пакет Java не в папках
Что? Почему бы не заставить Runner взять идентификатор и создать экземпляр во время выполнения? Что ты пытаешься сделать? –
Да. Вы всегда можете объявлять любую переменную или ссылаться на какой-либо класс, используя полное имя типа (то есть имя класса, добавленное с именем пакета). Но почему?? –
Вы можете динамически загружать классы во время выполнения через API-интерфейс Classloader. – MadProgrammer