我如何在Java中做到这一点?我可以用Javascript来做吗?
我正在尝试学习Java,我对Javascript有点了解,但我想知道如何用Java来实现这一点 我用它来编写Javascript我如何在Java中做到这一点?我可以用Javascript来做吗?,java,javascript,Java,Javascript,我正在尝试学习Java,我对Javascript有点了解,但我想知道如何用Java来实现这一点 我用它来编写Javascript var player = { X: 32, Y: 32, Cloned: false; }; 我将使用它来绘制图像(player.x,player.y),例如,我如何在java中执行类似的操作?在java中,没有直接等效的JavaScript即席对象1 相反,可以创建一个表示“对象”的[Player],然后实例化并使用一个或多个实例。这种类/实例方法,以及,是;在
var player = {
X: 32,
Y: 32,
Cloned: false;
};
我将使用它来绘制图像(player.x,player.y),例如,我如何在java中执行类似的操作?在java中,没有直接等效的JavaScript即席对象1
相反,可以创建一个表示“对象”的[Player],然后实例化并使用一个或多个实例。这种类/实例方法,以及,是;在Java中没有转义或可行的替代方法-当使用Java时,编写Java
public class Player {
protected int x;
protected int y;
// and maybe `cloned`, etc.
// maybe an "action"
public void move(int x, int y) {
this.x = x;
this.y = y;
}
// maybe a getter/setter
// (although `move` above may obsolete the use of such setter)
public int getX () { return x; }
public void setX (int x) { this.x = x; }
// and other relevant methods ..
};
以后的用法可能是
// create new instance of class/type
Player player = new Player();
// manipulate and use
player.move(19, 81);
drawImage(player.getX(), player.getY());
虽然Player类中提供了一个“setter”,但使用时只需要“getter”;我更喜欢使用操作(例如,移动
),并在适用时减少可变状态,而不是允许直接字段操作,因为这可能会增加。在任何情况下,请参见wrt此切线
也可考虑;对于真正的实现,我可能有一个实体接口,由Player类实现,它了解位置移动和位置。(虽然这更切题,但我希望我已经开始以这种方式编程“OOP”,并且我尝试避免基于实现类或子类型关系的类型契约!)
1 Java也是如此,但它不是静态类型固有的;例如,C#具有(尽管静态类型和推理在函数中受到限制),不同的语言支持强类型记录和/或结构类型和/或其他静态类型语言中的动态类型。然而,Java需要将这些代码编码到一个类中,以在语言级别提供支持。这里混合了两种不同的东西。Javascript是一种用于网站脚本编写的客户端语言,Java是一种通用的OO语言,可用于多个项目,并在服务器端工作 现在您想用Java来定义它。您可以使用类来执行此操作:
public class Player {
private int x;
private int y;
private boolean cloned;
public Player (int x, int y, boolean cloned)
{
this.x = x;
this.y = y;
this.cloned = cloned;
}
public void move (int x, int y)
{
this.x = x;
this.y = y;
}
public Point getCoordinates()
{
return new Point(x, y);
}
}
然后实例化为newplayer(32,32,false)代码>
这是一个非常粗糙的示例,确实可以改进,但基本上是这样的。您可以使用HashMap在Java中尝试这一点。我将给您一个示例,它可能不相同,但逻辑在其中
HashMap player = new HashMap();
player.put("X", "32");
player.put("Y", "32");
player.put("Cloned", "false");
System.out.print( player.get("X") ); // will print 32
System.out.print( player.get("X") ); // will print 32
System.out.print( player.get("Cloned") ); // will print false
你想做什么?你尝试过什么?我建议你花点时间学习Java,而不是依赖你的JavaScript经验。这两种语言非常不同。Java和JavaScript不一样。我知道JavaScript和Java不一样,但它是JavaScript。我可以创建player变量并在其中创建一些其他变量,如果我想画一幅图像,我可以使用“player.x或player.y”作为坐标?如果你明白了?@user1231958,我想OP已经知道了……我不确定将javascript单独降级为“用于网站脚本编写的客户端语言”是否安全。它确实还有其他用途(MongoDB等),但它的主要用途是作为网站客户端的脚本编写语言。Java是用于小程序的?“MongoDB等”这是一种非常奇怪的方式来描述JavaScript的应用程序。我没有深入研究具体的JS应用程序,只是指出JS确实可以用于不仅仅是网站。然而,JS更多地用于网站。getter/setter是一种反模式。除非有必要,否则我不会添加它们。@user1231958这取决于询问谁以及在何处使用这些getter/setter。。我同意,与“自然”支持这种习惯用法的语言相比,Java方法通常是丑陋的;但是在任何情况下,如果要直接修改状态(例如,不通过直接操作,如移动
),那么我更愿意看到setter的使用,而不是直接字段访问。这是真的,在任何情况下,您都不应该直接公开属性,甚至getter/setter都比public属性好。@user1231958我通常信任包的默认值,但我刚刚更新了文章,明确地保护了字段以解决这个问题。