Java 在另一个类中使用主类中的对象
所以我们正在尝试创建一个人工智能机器人,我发现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;
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随便什么。这样的课程很有意义,谢谢!这正是我想要达到的。一旦我有机会,我会发布它是否有效。非常感谢!