2015-11-06 62 views
-7

我正在移植大量从PHP到Java(Android应用程序)的代码。一切都做,但我在这里面临的一个问题,等效于来自PHP中的Java

我得到这个PHP代码:

class SenderKeyGroupData{ 
    const MESSAGE = 1; 
    const SENDER_KEY = 2; 
    /* @var array Field descriptors */ 
    protected static $fields = array(
     self::MESSAGE => array(
     'name' => 'message', 
     'required' => false, 
     'type' => 7, 
    ), 
     self::SENDER_KEY => array(
      'name' => 'sender_key', 
      'required' => false, 
      'type' => "SenderKeyGroupMessage", 
    ), 
); 

但是我想在Java中的代码,例如我创造了这个Java代码:

class SenderKeyGroupData { 
    int MESSAGE = 1; // Must be const 
    int SENDER_KEY = 2; // Must be const 

    // These two Maps must be in the $fields array? 
    Map MESSAGE = new HashMap(); //Duplicate conflict here 
    MESSAGE.put("name", "message"); 
    MESSAGE.put("required", false); // Map can't contain booleans? 
    MESSAGE.put("type", "7"); 

    Map SENDER_KEY = new HashMap(); //Duplicate conflict here 
    SENDER_KEY.put("name", "sender_key"); 
    SENDER_KEY.put("required", false); // Map can't contain booleans? 
    SENDER_KEY.put("type", "SenderKeyGroupMessage"); 
} 

我将问题描述为评论。所有想法都欢迎。

请注意,const在构造函数中包含1和2作为值,但也会分配一个数组。所以请举个例子,而不是将它指向重复。

+0

如果你在评论中描述的问题,那么没有一个,但更多。如果这是常量问题,那么上面的swidmann的评论会回答它。 –

+1

这是非常直截了当的东西,关于错误消息还不清楚吗?你不能有两个同名的变量。一旦我解决了这个问题,你的代码就会被编译。不知道你在说什么“地图不能包含布尔值”。 – tnw

+0

您需要阅读Java基础知识。否则你会面临很多这样的错误。 – lewkka

回答

0

我真的不知道如何以及在哪里,你需要访问这些变量,或者你打算如何使用这个类,但这至少编译:

class SenderKeyGroupData { 

    public static final int MESSAGE = 1; // final keyword means it cannot be changed 
    public static final int SENDER_KEY = 2; // public keyword means it can be accessed by anyone 

    static Map MESSAGE_MAP = new HashMap(); // static means this is shared between all instances 
    static { 
     MESSAGE_MAP.put("name", "message"); 
     MESSAGE_MAP.put("required", false); 
     MESSAGE_MAP.put("type", "7"); 
    } 

    static Map SENDER_KEY_MAP = new HashMap(); 
    static { 
     SENDER_KEY_MAP.put("name", "sender_key"); 
     SENDER_KEY_MAP.put("required", false); 
     SENDER_KEY_MAP.put("type", "SenderKeyGroupMessage"); 
    } 
} 
+0

谢谢!我从来不知道我可以使用没有参数的Map! –

+0

没问题,高兴帮忙:) –