Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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中做到这一点?我可以用Javascript来做吗?_Java_Javascript - Fatal编程技术网

我如何在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],然后实例化并使用一个或多个实例。这种类/实例方法,以及,是;在

我正在尝试学习Java,我对Javascript有点了解,但我想知道如何用Java来实现这一点

我用它来编写Javascript

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我通常信任包的默认值,但我刚刚更新了文章,明确地保护了字段以解决这个问题。