我怎么能用Java做到这一点?我可以用Javascript做到吗?

时间:2014-06-18 22:16:49

标签: java javascript

我正在尝试学习Java,我有点了解Javascript,但我想知道如何在Java中做到这一点

我将此用于Javascript。

var player = {
X: 32,
Y: 32,
Cloned: false;

};

我会用它来绘制图像(player.x,player.y)例如,我如何在java中做这样的事情?

3 个答案:

答案 0 :(得分:2)

在Java中,statically typed no 直接等效于 1 提供的JavaScript ad-hoc对象。

相反,可以创建表示“对象”的[Player] class,然后实例化并使用一个或多个实例。此类/实例方法以及subtypingJava OOP model核心;在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”;我更喜欢使用操作(例如move),并在适用时减少可变状态,而不是允许直接字段操作,因为这会增加encapsulation。无论如何,请参阅How do getters and setters work?这个切线。

还要考虑"programming to interfaces";对于一个真正的实现,我可能会有一个Entity接口,由Player类实现,它可以理解位置移动和位置。 (虽然这更加切合实际,但我希望我已经开始以这种方式编写“OOP”,并尝试基于实现类或子类型关系来避免类型契约!)


1 这对Java来说是正确的,但它不是静态类型所固有的;例如,C#具有anonymous types(虽然静态类型和推理在函数内是有限的),并且不同的语言支持强类型记录和/或结构类型和/或动态类型,否则是静态类型语言。但是, 要求将其编入类中,以便在语言级别获得支持。

答案 1 :(得分:1)

你在这里混合了两件不同的东西。 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);
    }
}

然后你实例化为new Player(32, 32, false);

这是一个非常粗略的例子,确实可以改进,但基本上就是这样。

答案 2 :(得分:0)

你可以使用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