2015-11-06 69 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

沒問題,高興幫忙:) –