Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—如何在多个类中使用同一对象_Java_Swing_Class_Object - Fatal编程技术网

Java—如何在多个类中使用同一对象

Java—如何在多个类中使用同一对象,java,swing,class,object,Java,Swing,Class,Object,我是新来的,请原谅我可能犯的错误:) 我正在写一个游戏,作为我的编码课程的最后一个项目。而且…我真的被卡住了。我想创建某个类的一个对象,但稍后我需要传递来自其他不同类的不同数据,以便在使用程序结束时保存所有数据 例如,我在大型机中创建一个对象,并从中获取一个用户的名称。然后我转到下一帧,获取用户的年龄等 如果能用尽可能简单的英语回答,我将不胜感激,因为我不太流利:) 顺便说一句,我正在使用netbeans。 非常感谢 只需将对象传递给您想要的类,并在您想要的方法中相应地使用它!下面是一个包含两个

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

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

例如,我在大型机中创建一个对象,并从中获取一个用户的名称。然后我转到下一帧,获取用户的年龄等

如果能用尽可能简单的英语回答,我将不胜感激,因为我不太流利:) 顺便说一句,我正在使用netbeans。
非常感谢

只需将对象传递给您想要的类,并在您想要的方法中相应地使用它!下面是一个包含两个类的示例:

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)
然后,您可以以任何方式使用此对象

只要使用方法将您的
大型机
类的对象发送到您想要的任何位置即可。当您从不同的方法更改对象时,该对象将包含来自的所有数据

如果你需要一个单独的对象<代码>主机> /代码>,那么你可以考虑使用模式来创建对象。p> 要将内容保存到文件(或流),可以使用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;
}
}
import java.io.Serializable;
导入java.util.ArrayList;
公共类测试实现可序列化{
public ArrayList urDiferentKindOfThings=new ArrayList();
公共布尔加法(对象o){
如果(o!=null){
添加(o);
返回true;
}
返回false;
}
}
现在,只需添加您想要保存的任何内容(对象!),然后在游戏结束时只需保存应包含所有内容的类型测试对象(您可能需要阅读有关serializable的内容,因为它使生活变得简单)


好看

只需尝试单例设计模式即可

举个简单的例子:

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的更多信息:


希望这有帮助。

您将类实例传递到管理类中

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

将对象传递给所需的方法,并访问必要的字段。如果需要对象属性的值来创建另一个对象,请创建需要该对象的构造函数,并在构造函数中访问其字段。可以将类的引用传递给其他每个类,也可以创建静态实用程序类或使用搜索键创建单例。仅仅一匙输入代码并不是答案。你必须解释。