Java - как использовать один и тот же объект во многих классах

1

Я здесь новый, поэтому, пожалуйста, простите возможные ошибки :)

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

Например, я создаю объект в MainFrame и получаю от него имя пользователя. Затем я перехожу в NextFrame и получаю возраст пользователя и т.д.

Я был бы признателен за ответы как можно более простым английским языком, я не говорю свободно. Я использую netbeans btw. Большое спасибо !

  • 0
    Передайте объекты нужным вам методам и получите доступ к необходимым полям. Если вам нужны значения свойств объекта для создания другого объекта, создайте конструктор, который требует этот объект, и получите доступ к его полям в конструкторе.
  • 0
    Вы можете передать ссылку на ваш класс друг другу или вы можете создать статический служебный класс или создать синглтон
Показать ещё 1 комментарий
Теги:
class
object
swing

6 ответов

2

Просто попробуйте шаблон дизайна Singleton.

Простой пример:

class SingletonClass {
    private static SingletonClass instance = null;
    private String customAttribute;

    public SingletonClass() {
        //default constructor stuff here
    }

    //important singleton function
    public static SingletonClass getInstance() {
        if(instance == null)
            instance = new SingletonClass();
        return instance;
    }

    // getter and setter
}

теперь, в вашем фрейме или любом другом классе вы просто выполните следующее:

SingletonClass myObject = SingletonClass.getInstance();

когда эта функция вызывается в первый раз, создается новый объект. Позже он возвращает первый созданный. С помощью Singleton Pattern вы можете легко сохранять данные в одном объекте через несколько классов.

для получения дополнительной информации о Singleton: http://en.wikipedia.org/wiki/Singleton_pattern

надеюсь это поможет.

0

для сохранения файлов в файл (или поток) вы можете использовать интерфейс serializable:

import java.io.Serializable;
import java.util.ArrayList;

public class Test implements Serializable {

public ArrayList<Object> urDiferentKindOfThings = new ArrayList<Object>();

public boolean add(Object o) {
    if (o != null) {
        urDiferentKindOfThings.add(o);
        return true;
    }
    return false;
}
}

Теперь просто добавьте что-нибудь (Object!), Которое вы хотите сохранить, а затем в конце вашей игры просто сохраните объект типа TEST, который должен содержать все ваши вещи (вам, возможно, потребуется прочитать о сериализованном, поскольку это упростит жизнь)

Хороший взгляд

0

Просто отправьте объект своего класса MainFrame с помощью метода, где бы вы ни захотели. Объект будет содержать все данные, если вы меняете его из другого метода.

Если вам нужен один объект MainFrame по всему классу, вы можете подумать об использовании шаблона singleton для создания объекта.

0

Вы передаете экземпляры класса в управляющий класс

public class Game {

    private MainFrame mainframe = null;
    private NextFrame nextframe = null;


    public Game(){
        this.mainFrame = new MainFrame();
        this.nextFrame =  new NextFrame();  
    }

    public Game(MainFrame mainFrame, NextFrame nextFrame){
        this.mainframe = mainFrame;
        this.nextframe = nextFrame;
    }    

    public String getName(){
        return mainFrame.getName();
    }

    public int getAge(){
        return nextFrame.getAge();
    }

}


public class MainFrame {
    private String name = "John"

    public String getName(){
        return name;
    }
}

public class NextFrame{
        private int age = 25;

        public int getAge(){
            return age;
        }
}
0

просто передайте объект классу, который вы хотите, и используйте его соответствующим способом, который вы хотите! Вот пример с двумя классами:

class oneClass {
   void oneMethod() {
      Class1 myClass1 = new Class1();
      Class2 myClass2 = Class2 Class2();
      myClass2.setMyClass1(myClass1);
   }
}

class Class2 {
   Class1 myClass1;
   //...
   void setMyClass1(Class1 myClass1) {
     this.myClass1 = myClass1;
   }
   //...
   void doSomething() {
      // do something with instance variable myClass1
   } 
}

В вашем случае Class1 может быть MainFrame а Class2 может быть NextFrame или, тем не менее, вы хотите назвать их...

Как вы можете видеть из моего кода, вы передаете класс myClass1 в myClass2 используя следующую строку кода: myClass2.setMyClass1(myClass1); и тогда вы можете работать на этом объекте любым способом

0
class a{
  function dosomething(){
     //code goes here
   }
}

class b{
    a firstobject=new a();
    c secondobject=new c(a objtopass);  //passing object of a to c
    function donext(){
        //next code
    }
}

class c{
a receivedobj=null;
public c(a objtoreceive){
    //constructor
    receivedobj=objtoreceive;
}
 function doAdd(){
   //function code
  }
}
  • 0
    Просто код кормления с ложечки не является ответом. Вы должны объяснить.

Ещё вопросы

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