2014-12-23 3 views
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

один публичный Classe можно в файле .java – user3714257

+0

Затем создать собственный файл для этого класса. Есть причина поместить два или более классов в один файл, если вам нужно получить к ним доступ из разных классов? – Tom

+0

Как стоит? Вы не можете. Вот почему вы обычно не добавляете классы для одного и того же файла. –

ответ

13

Есть два варианта:

  • Переместите второй класс в другой файл (рекомендуется)
  • Добавить модификатор static и поставить второй класс в первый (вложенный класс)
+0

хорошо. +1. , , , –

+0

Eclipse сказал мне: «Незаконный модификатор для класса Example2; разрешены только публичные, абстрактные и окончательные' – yunandtidus

+0

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

2

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

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

0

Добавление общественного статическую является ключевым здесь, но вам нужно переместить класс 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

0

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

Blah blah = new other.package.Blah(); 
+0

Это не сработает. –

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