Java 在另一个类中使用主类中的对象

Java 在另一个类中使用主类中的对象,java,object,Java,Object,所以我们正在尝试创建一个人工智能机器人,我发现Java并不像我想象的那么容易。 我试图做的是从另一个类获取一个对象 主要类别: package main; import lejos.hardware.Brick; import lejos.hardware.BrickFinder; import lejos.hardware.motor.EV3LargeRegulatedMotor; import lejos.robotics.RegulatedMotor;

所以我们正在尝试创建一个人工智能机器人,我发现Java并不像我想象的那么容易。 我试图做的是从另一个类获取一个对象

主要类别:

    package main;


   import lejos.hardware.Brick;
   import lejos.hardware.BrickFinder;
   import lejos.hardware.motor.EV3LargeRegulatedMotor;
   import lejos.robotics.RegulatedMotor;
   import movement.Forward;

   public final class Runner {


    public static void main(String[] args) {
        //create brick
        Brick brick = BrickFinder.getDefault();

        // create motors
        RegulatedMotor left = new EV3LargeRegulatedMotor(brick.getPort("A"));
        RegulatedMotor right = new EV3LargeRegulatedMotor(brick.getPort("D"));

        //initialize motors
        left.setAcceleration(400);
        right.setAcceleration(400);

        left.setSpeed(400);
        right.setSpeed(400);



    Forward forward = new Forward();
        forward.moveForward();

    }



}
但另一类是这个

    package movement;


   import lejos.utility.Delay;
   import main.Runner;

   public class Forward{

    public int speed;



    public void moveForward(){
        //moves forward for 5 seconds, then floats until motor stops and then closes the motors
            left.backward();
            right.backward();

            Delay.msDelay(5000);

            left.flt();
            right.flt();

            left.close();
            right.close();



    }

}

我想使用对象left和right来创建一个向前移动的方法。

您可以将left和right传递到forward:

Forward forward = new Forward(left, right);
并更改正向构造函数:

public class Forward{

    public int speed;
    RegulatedMotor left;
    RegulatedMotor right;

    public Forward(RegulatedMotor l, RegulatedMotor r) {
        left = l;
        right = r;
    }

您的
Forward
类显然需要引用两个电机实例。您应在施工时转发(无双关语):

public class Forward {
    private final RegulatedMotor left;
    private final RegulatedMotor right;

    public Forward(RegulatedMotor left, RegulatedMotor right) {
        this.left = left;
        this.right = right;
    }

    public void moveForward() { ... }
}
您的
foward
方法现在可以访问它们。现在必须按照以下步骤构建这样一个
转发

Forward forward = new Forward(left, right);

首先,您必须在“main”子例程之外初始化它们。然后你就必须把它们公开和静态

public static RegulatedMotor left;
public static RegulatedMotor right;
public static void main(String[] args)
{
    left = new EV3LargeRegulatedMotor(brick.getPort("A"));
    right = new EV3LargeRegulatedMotor(brick.getPort("D"));
    //rest of code as normal.
}
然后从另一个类访问它们,我相信您会使用:

Runner.left.Whateverfunction();
对于“左”对象和

Runner.right.Whateverfunction();
对于“右”对象


我可能会出现一些语法错误,因为我主要是一名C#程序员,但我相信这或多或少应该是准确的。

为什么Forward是一个类?“向前移动在跑步课上不是更有意义吗?”@Averoes嗯。。。也许是为了这么一个小节目。但是你听说过那件事吗?让
Forward
类实现一些
Move
接口(或其他),并将这些移动的实例分配给。。。鼠标单击侦听器。。。自动计算机。。。a随便什么。这样的课程很有意义,谢谢!这正是我想要达到的。一旦我有机会,我会发布它是否有效。非常感谢!