【问题标题】:Equivalent to const from PHP in Java [duplicate]等效于 Java 中 PHP 的 const [重复]
【发布时间】:2016-02-07 20:30:59
【问题描述】:

我正在将大量代码从 PHP 移植到 Java(一个 Android 应用程序)。一切都已完成,但我在这里遇到了问题,

我得到了这个 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");
}

我将这些问题描述为 cmets。欢迎所有想法。

请注意,const 包含 1 和 2 作为构造函数中的值,而且还获得了分配的数组。所以请举个例子而不是重复。

【问题讨论】:

  • 如果您在 cmets 中描述的是问题,那么问题不止一个,而是更多。如果是 const 问题,那么上面 swidmann 的评论会回答它。
  • 这是非常直接的东西,错误信息有什么不清楚的地方?您不能有两个具有相同名称的变量。一旦我解决了这个问题,你的代码就会编译。不确定您在说什么“地图不能包含布尔值”。
  • 您需要阅读 Java 基础知识。否则你会面临很多这样的错误。

标签: java php android


【解决方案1】:

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

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");
    }
}

【讨论】:

  • 谢谢!我从来不知道我也可以使用没有参数的地图!
  • 没问题,乐于助人:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 2014-10-20
  • 2014-01-20
  • 2013-10-01
  • 1970-01-01
相关资源
最近更新 更多