Java - 如何在许多类中使用相同的对象

时间:2015-03-26 20:29:39

标签: java swing class object

我是新来的,所以请原谅可能的错误:)

我正在编写一个游戏作为我编码课程的最终项目。而且......我真的被卡住了。我想稍后创建某个类BUT的一个对象我需要从不同的其他类传递不同的数据,这样我就可以在使用程序结束时保存所有数据。

例如,我在MainFrame中创建一个对象,并从那里获取用户的名称。然后我去NextFrame并获得用户年龄等等。

我以尽可能简单的英语欣赏答案,我不流利:) 我正在使用netbeans btw。 非常感谢!

6 个答案:

答案 0 :(得分: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

希望这会有所帮助。

答案 1 :(得分: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可以是MainFrameClass2可以是NextFrame,或者您想要给他们打电话......

正如您从我的代码中看到的那样,您使用以下代码行将myClass1传递给myClass2myClass2.setMyClass1(myClass1);然后您可以以任何您想要的方式使用此对象

答案 2 :(得分:0)

只需使用方法将MainFrame类的对象发送到您想要的任何位置即可。无论何时从不同的方法更改它,对象都将包含所有数据。

如果您需要在整个班级中使用单个对象MainFrame,那么您可以考虑使用singleton模式来创建对象。

答案 3 :(得分:0)

将内容保存到文件(或流),您可以使用interface 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;
}
}

现在,只需添加要保存的任何内容(对象!),然后在游戏结束时保存应包含所有内容的TEST类型的对象(您可能需要阅读有关序列化的内容,因为它可以让生活易)

好看的

答案 4 :(得分: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;
        }
}

答案 5 :(得分:-1)

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
  }
}