Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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 - Fatal编程技术网

Java 从另一个类获取字段';不使用静态

Java 从另一个类获取字段';不使用静态,java,Java,我在一个类中声明了一个对象,但现在我在另一个类中,我希望在不使所有内容都静态的情况下获取对象的字段。在当前类中,我没有存在于另一个类中的对象,并且我不知道如何调用它。如果我使用getter,我想我仍然需要当前类中的对象来调用它,而且我不想让字段成为静态的,因为我希望每个对象的字段都是唯一的 package main; import daysOfTheWeek.*; public class Game { private int currentDayOfWeek = 1; pr

我在一个类中声明了一个对象,但现在我在另一个类中,我希望在不使所有内容都静态的情况下获取对象的字段。在当前类中,我没有存在于另一个类中的对象,并且我不知道如何调用它。如果我使用getter,我想我仍然需要当前类中的对象来调用它,而且我不想让字段成为静态的,因为我希望每个对象的字段都是唯一的

package main;
import daysOfTheWeek.*;

public class Game {

    private int currentDayOfWeek = 1;
    private int totalDays = 1;
    boolean playerHadEvent = false;

    public void startGame(){
        while(true){
            boolean eventDay = false;
            if(currentDayOfWeek == 5 || currentDayOfWeek == 6){      //check if current day isn't Friday or Saturday
                eventDay = true;
            }
            System.out.println("==DAY " + totalDays + ", " + DaysOfTheWeek.getDay(currentDayOfWeek)+"==");
            if(eventDay){
                String event = Events.getEvent();
                if(event.equals("gaming")){
                    System.out.println("Today there is " + Messages.getGamingEvent());
                    if(){ //get the field from another class's object

                    }
                }

            }


            totalDays++;
            currentDayOfWeek++;
            if(currentDayOfWeek == 8){
                currentDayOfWeek = 1;
                playerHadEvent = false;
            }

        }
    }
}

package main;
import daysOfTheWeek.*;
import dices.*;


public class Demo {

    public static void main(String[] args) {

        Student player = new Student();
        Student computer = new Student();

        player.generatePlayer(player);
        computer.generateComputer(computer);

        Game startingGame = new Game();
        startingGame.startGame();

    }
}
我就是这样创建了这两个对象,并通过一种方法设置了它们的字段。现在我尝试使用这两个对象,但在第三类中,在您的主类中:

public class Main{
    public static void main(String[] args){
        Game game = new Game();
        System.out.println(game.getCurrentDayOfWeek());
    }
}
因此,您需要创建getCurrentDayOfWeek方法

你可以做一个单体模式

class Junk{
    int value;
    static Junk instance = new Junk();

    static int getJunkStuff(){
        return instance.value;
    }
    static void setInstance(Junk j){
        instance = j;
    }
}
听起来您应该更好地构造代码,所以也许您应该粘贴一个更完整的示例

第三个类需要引用这些对象吗?然后给它一个参考

class Third{
    Game game;
    public Third(Game g){
        game = g;
    }
    public Third(){

    }
    public void setGame(Game g){
         this.game = g;
    }
}

第三个例子,让第三个通过setter引用。

对不起,我完全不理解你的问题。代码与问题的关系如何?你能在问题的文本中引用你代码的特定部分吗?还有,你所说的“我没有存在于另一个类中的对象,我真的不知道如何调用它”是什么意思?你不能调用一个对象;你只能调用方法。我在其他类中声明了一个对象,但我不能在这个类中使用它,也许我应该尝试通过方法调用它,这样我就可以使用这个类中的对象字段了?真的很抱歉,但这是我的第一个面向对象程序,我有困难的时候。它甚至更复杂,因为我在一个类中声明了它,并通过他原来的类中的方法设置了它的字段,现在我想在第三个类中使用这个对象。你需要一个对象的实例。你实际上还没有展示你的问题。一、两、三节课其实没关系。您有一个类A的实例,它需要对类B的实例的引用。您可以显式地将对类A实例的引用传递给类B的实例(即通过setter或构造函数),也可以将对类B的引用创建为静态成员(这不是一个好的做法,除非有原因)不抱歉,也许我的问题不够清楚。这很好用。我有一个静态方法,我通过类名来调用它。我只需要引用一个我在其他类中已经有过的对象,但我不知道如何使它发生。你的问题一点也不清楚。你的问题与你的代码有什么关系?@GeorgiMichev我更新了答案,加入了另一个例子。也许这更符合你的想法。@GeorgiMichev把它放在你的问题中,格式化,而不是评论。是的,我还在这里添加了另一个类。现在我只需要在我的第三个类中引用这两个对象,这样我就可以访问它们的字段了