繁体   English   中英

什么是Java中相当于多维对象的Java?

[英]What is the Java equivalent to a multi dimensional object in Javascript?

我有一个Android游戏,希望将关卡存储为静态Java类。 Java中以下Javascript对象的等效项是什么?

var Levels = {
Level1:{
    shapes:[
    {
        bodytype : "dynamic",
        h : "50.0000",
        nameid : "hofN7-1",
        props : {
            id : "properties"
        },
        rotation : "0.0000",
        type : "square",
        uid : "Av2EZQh",
        w : "50.0000",
        x : "20.0000",
        y : "20.0000"
    },
    {
        bodytype : "dynamic",
        h : "50.0000",
        nameid : "hofN7-2",
        props : {
            gravMassScale : "2",
            id : "properties",
            inertia : "2",
            isBullet : true,
            torque : "2",
            velocity : {
                x : "2",
                y : "2"
            }
        }
    }
...

如果您正在寻找类似于JS存储对象的方式,则可以尝试JSONObject类:

http://json.org/javadoc/org/json/JSONObject.html

从工程的角度来看,不考虑语法到语法的映射,我将级别存储在“级别”映射中,如下所示:

HashMap<String, Level> myLevels = new HashMap<String, Level>();

正如评论者所写,您可以使用Map在Java中创建等效对象。 但是,此映射中的值是不同的类型。 有些是String 有些是某种类型的Object数组。 有些是Map本身。

然后,您可以使用的唯一集合对象是Map<String, Object> ,然后每次使用它时都需要进行instanceof检查。 这太笨拙了。

您可以使用JSON绑定库,例如Jackson。 参见http://wiki.fasterxml.com/JacksonHome 在这种模式下,您可以创建一个类Levels并注释其实例变量,以便Jackson可以将实例转换为JSON并返回。 但是您需要为此了解您的类结构。 杰克逊有一种可以使用非类型化地图的模式。

最后,您可以通过将Levels视为树并使用Composite模式来对Levels进行建模。 您将拥有一个拥有名称的Node抽象类以及一些具体的子类,例如IntegerNodeStringNodeDoubleNodeMapNodeArrayNode

使用此调整后的JSON版本,并使用jsonschema2pojo创建类:

{
  "Levels":{
    "shapes":[
    {
      "bodytype" : "dynamic",
      "h" : "50.0000",
      "nameid" : "hofN7-1",
      "props" : {
          "id" : "properties"
      },
      "rotation" : "0.0000",
      "type" : "square",
      "uid" : "Av2EZQh",
      "w" : "50.0000",
      "x" : "20.0000",
      "y" : "20.0000"
    },
    {
      "bodytype" : "dynamic",
      "h" : "50.0000",
      "nameid" : "hofN7-2",
      "props" : {
        "gravMassScale" : "2",
        "id" : "properties",
        "inertia" : "2",
        "isBullet" : "true",
        "torque" : "2",
        "velocity" : {
          "x" : "2",
          "y" : "2"
        }
      }
    }]
  }
}

检查JSON进行转换,然后根据需要选择其他选项。 您可以在Java项目中下载并使用转换后的类。

希望这可以帮助...干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM