2016-02-18 3 views
0

Доброе утро/вечер/вечер,Java - объекты в объекте?

Я начинающий Java, но мне было поручено создать приложение базы данных. В этом приложении, я хотел бы создать класс, который возвращает другие объекты при создании экземпляра этого класса:

public LoadStudents(String query){ 

    File studentsFolder = new File("Data/Students/"); 
    try{ 
    switch (query){ 

    case "all": // additional cases might be added in the future 
     //- that's why I am using the class in the first place 

     for (final File entry : studentsFolder.listFiles()){ 
      if(!entry.isDirectory()){ 
       FileInputStream in = new FileInputStream(entry); 
       ObjectInputStream object = new ObjectInputStream(in); 
       Student[] student = (Student[]) object.readObject(); 
       object.close(); 
      } 

     } 
     break; 
    default: 
     final File entry = new File("Data/Students/"+query+".stud"); 
     FileInputStream in = new FileInputStream(entry); 
     ObjectInputStream object = new ObjectInputStream(in); 
     Student searched = (Student) object.readObject(); 

    } 
    } 

    catch(Exception load){ 
     load.printStackTrace(); 
    } 

} 

Мой вопрос: Может ли студент объекты могут быть доступны при создании объекта LoadStudents ? Если да, то как?

LoadStudents load = new LoadStudents("something"); 
load.searched.doSomething(); 

возможно?

P.S. Извините, если это вопрос noobish, но я хотел бы знать ответ, тем не менее.

+0

Попробуйте что-нибудь, посмотрите, работает ли оно. Ваша идея кажется хорошей. Кроме того, возможно, не выполняйте загрузку в конструкторе.Таким образом, вы можете просто получить возвращаемое значение. –

ответ

0

Если общедоступные методы класса возвращают объекты (любой объект), то другие классы могут использовать его без ограничений. Существуют и другие правила, но это основной вопрос, который следует учитывать при запуске Java-программирования.

Кроме того, я рекомендую вам принять (в начале, по крайней мере) другой стиль организации вашего решения.

  1. Сделайте свои имена классов отраженными вещами.
  2. Сделать имена методов в классе отражают то, что вы можете делать с этой штукой.

так

public class Database { 
    ..... 

    public Student getStudentById(String id) { 
    .... 
    } 

    .... 
} 

который затем привыкаешь, как так

Database database = .... 

Student bob = database.getStudentById("2323"); 

или что-то в этом роде.

При таком подходе, то вы можете добавить интерфейс «StudentListener», например, так

public interface StudentListener { 
    .... 
    public void studentAdded(Details ...); 

} 

И сделать базу данных принимают студентов слушателей.

(in Database) 
public void addListener(StudentListener listener) { 
    ... 
} 

Затем, когда студент дополнение делается вызова дополнительных линий

for (StudentListener listener : listeners) { 
    listener.studentAdded(details); 
} 

будут слушатели будут уведомлены по базе данных, которая была добавлена ​​студент.

Шаблон выше известен как шаблон прослушивателя, и вы должны его изучить. Это очень полезно во многих ситуациях, и вы увидите это снова.

0

Добавить объект поиска студента в класс.

ex.

общественный поиск студентов;

В конструкторе задайте объект для поиска поля. Вам не нужно создавать новый объект.

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