Два класса в одном файле

1

У меня проблема с двумя классами в одном файле.java. Это ситуация:

package pak1;

public class Example1 {

//some things'enter code here'
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
}

class Example2 {
//some things
}

Мой вопрос: как я могу создать экземпляр Example2 в пакете других (если это возможно)?

  • 0
    один публичный класс возможен в файле .java
  • 0
    Затем создайте собственный файл для этого класса. Есть ли причина поместить два или более классов в один файл, если вам нужен доступ к ним из разных классов?
Показать ещё 2 комментария
Теги:

5 ответов

13
Лучший ответ

Существует два варианта:

  • Переместите второй класс в другой файл (рекомендуется)
  • Добавьте модификатор static и поместите второй класс в первый (вложенный класс)
  • 0
    хороший. +1 , , ,
  • 0
    Eclipse сказал мне Illegal modifier for the class Example2; only public, abstract & final are permitted
Показать ещё 2 комментария
2

Это зависит от того, где вы хотите создать объекты.

Поскольку класс Example1 является public, вы можете создать экземпляр этого класса из любого места. Но Example2 имеет уровень доступа по default. Таким образом, вы можете создавать экземпляр только из этого класса только в вашем пакете pak1

0

Я думаю, вы можете попробовать полное квалифицированное имя. Подобно:

Blah blah = new other.package.Blah();
  • 0
    Это не сработает.
0

Добавление public static - это ключ здесь, но вам нужно переместить класс Example2 в примере 1

public class Example1 {

    // some things'enter code here'
    public static void main(String[] args) {

    }

    public static class Example2 {
        // some things
    }
}

И где-то еще:

new Example1 .Example2();
  • 0
    Я думаю, что этот вопрос не о внутренних классах
0

Если в файле, который должен быть доступен из другого пакета, должно быть несколько class, вы всегда можете его вложить.

public class Example1 {
    public class Example2 {

    }
}

Затем выполните следующие действия:

new Example1().new Example2()

Или переместите его в другой файл. Или сделайте его static

Ещё вопросы

Сообщество Overcoder
Наверх
Меню