我是新来的,所以请原谅可能的错误:)
我正在编写一个游戏作为我编码课程的最终项目。而且......我真的被卡住了。我想稍后创建某个类BUT的一个对象我需要从不同的其他类传递不同的数据,这样我就可以在使用程序结束时保存所有数据。
例如,我在MainFrame中创建一个对象,并从那里获取用户的名称。然后我去NextFrame并获得用户年龄等等。
我以尽可能简单的英语欣赏答案,我不流利:) 我正在使用netbeans btw。 非常感谢!
答案 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
可以是MainFrame
而Class2
可以是NextFrame
,或者您想要给他们打电话......
正如您从我的代码中看到的那样,您使用以下代码行将myClass1
传递给myClass2
:myClass2.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
}
}