Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据另一个字符串的值确定一个字符串?_Java_Android_String - Fatal编程技术网

Java 根据另一个字符串的值确定一个字符串?

Java 根据另一个字符串的值确定一个字符串?,java,android,string,Java,Android,String,我不太确定如何描述这个问题,所以我将直接进入示例代码 我有一个常量.java package com.t3hh4xx0r.poc; public class Constants { //RootzWiki Device Forum Constants public static final String RWFORUM = "http://rootzwiki.com/forum/"; public static final String TORO = "362

我不太确定如何描述这个问题,所以我将直接进入示例代码

我有一个常量.java

   package com.t3hh4xx0r.poc;


public class Constants {

    //RootzWiki Device Forum Constants
    public static final String RWFORUM = "http://rootzwiki.com/forum/";
    public static final String TORO = "362-cdma-galaxy-nexus-developer-forum";

    public static String DEVICE;
}
在尝试确定设备类型时,我使用此方法

public void getDevice() {
    Constants.DEVICE = android.os.Build.DEVICE.toUpperCase();
    String thread = Constants.(Constants.DEVICE);
}
虽然这是不正确的,但我认为这是可行的

我在Galaxy Nexus上将Constants.DEVICE设置为TORO。然后我想将线程字符串设置为Constants.TORO

我不认为我解释得很好,但你应该能够理解我试图从示例代码中做什么。我想要

常量。(Constants.DEVICE的值)为字符串线程设置

换句话说


我想获取常量。//android.os.Build.DEVICE.toUpperCase()的值)

我为这个措辞拙劣的问题道歉,我不知道有什么更好的方式来解释我想要达到的目标

我正在尝试根据设备类型确定线程。我可以进去洗个澡

if (Constants.DEVICE.equals("TORO"){
    String thread = Constants.TORO;
}

但我计划在将来添加更多的设备选项,并希望将其简化为向Constants.java添加字符串,而不必添加另一个if子句。

我建议使用枚举而不仅仅是字符串-然后您可以使用:

String name = android.os.Build.DEVICE.toUpperCase();
// DeviceType is the new enum
DeviceType type = Enum.valueOf(DeviceType.class, name);
您可以将字符串的值放入枚举的字段中,并通过属性公开它:

public enum DeviceType {
    RWFORUM("http://rootzwiki.com/forum/"),
    TORO("362-cdma-galaxy-nexus-developer-forum");

    private final String forumUrl;

    private DeviceType(String forumUrl) {
        this.forumUrl = forumUrl;
    }

    public String getForumUrl() {
        return forumUrl;
    }
}
(我在猜测字符串值的含义——这不是一个很好的猜测,但希望它给出了正确的想法,这样您就可以使实际代码更有意义。)

编辑:或使用地图:

Map<String, String> deviceToForumMap = new HashMap<String, String>();
deviceToForumMap.put("RWFORUM", "http://rootzwiki.com/forum/");
deviceToForumMap.put("TORO", "362-cdma-galaxy-nexus-developer-forum");

...

String forum = deviceToForumMap.get(android.os.Build.DEVICE.toUpperCase());
Map devicetoformap=newhashmap();
deviceToForumMap.put(“RWFORUM”http://rootzwiki.com/forum/");
deviceToForumMap.put(“TORO”,“362 cdma galaxy nexus开发者论坛”);
...

String forum=devicetoformap.get(android.os.Build.DEVICE.toUpperCase());
我建议使用枚举而不仅仅是字符串-然后您可以使用:

String name = android.os.Build.DEVICE.toUpperCase();
// DeviceType is the new enum
DeviceType type = Enum.valueOf(DeviceType.class, name);
您可以将字符串的值放入枚举的字段中,并通过属性公开它:

public enum DeviceType {
    RWFORUM("http://rootzwiki.com/forum/"),
    TORO("362-cdma-galaxy-nexus-developer-forum");

    private final String forumUrl;

    private DeviceType(String forumUrl) {
        this.forumUrl = forumUrl;
    }

    public String getForumUrl() {
        return forumUrl;
    }
}
(我在猜测字符串值的含义——这不是一个很好的猜测,但希望它给出了正确的想法,这样您就可以使实际代码更有意义。)

编辑:或使用地图:

Map<String, String> deviceToForumMap = new HashMap<String, String>();
deviceToForumMap.put("RWFORUM", "http://rootzwiki.com/forum/");
deviceToForumMap.put("TORO", "362-cdma-galaxy-nexus-developer-forum");

...

String forum = deviceToForumMap.get(android.os.Build.DEVICE.toUpperCase());
Map devicetoformap=newhashmap();
deviceToForumMap.put(“RWFORUM”http://rootzwiki.com/forum/");
deviceToForumMap.put(“TORO”,“362 cdma galaxy nexus开发者论坛”);
...

String forum=devicetoformap.get(android.os.Build.DEVICE.toUpperCase());
我不确定我是否正确理解了这个问题,但我觉得这是一个使用地图的正确地方。结果将是这样的:

    HashMap<String, String> map;

    map.put(TORO, DEVICE);

    Constants.DEVICE = android.os.Build.DEVICE.toUpperCase();
    String thread = map.get(Constants.DEVICE);
HashMap;
地图。放置(TORO,设备);

Constants.DEVICE=android.os.Build.DEVICE.toUpperCase(); String thread=map.get(Constants.DEVICE);
很抱歉可能会有误会或你的问题,但我希望你已经明白了


另外,您可以在Java文档中找到有关地图的更多信息:,。

我不确定我是否正确理解了这个问题,但我觉得这是使用地图的正确地方。结果将是这样的:

    HashMap<String, String> map;

    map.put(TORO, DEVICE);

    Constants.DEVICE = android.os.Build.DEVICE.toUpperCase();
    String thread = map.get(Constants.DEVICE);
HashMap;
地图。放置(TORO,设备);

Constants.DEVICE=android.os.Build.DEVICE.toUpperCase(); String thread=map.get(Constants.DEVICE);
很抱歉可能会有误会或你的问题,但我希望你已经明白了


另外,您可以在Java文档中找到有关地图的更多信息:,。

您可以使用反射:

Constants.DEVICE = android.os.Build.DEVICE.toUpperCase();
String thread = (String) Constants.class.getField(Constants.DEVICE).get(null);

您可以使用反射:

Constants.DEVICE = android.os.Build.DEVICE.toUpperCase();
String thread = (String) Constants.class.getField(Constants.DEVICE).get(null);


等等,你为什么要自己设置?Android设备是否已经有了提供其身份的方法?看来反射可能会对您有所帮助:Android.os.Build.device.toUpperCase()将返回TORO。这不是问题所在。然后问题是将线程设置为常量。TOROWait,为什么要自己设置?Android设备是否已经有了提供其身份的方法?看来反射可能会对您有所帮助:Android.os.Build.device.toUpperCase()将返回TORO。这不是问题所在。问题是将线程设置为常量。ToRoi我以前从未使用过枚举,您是否介意再展示一点示例代码,说明我在设置“type”后如何使用它?@r2DoesInc:不清楚您试图实现什么,但您可以调用
type.getForumUrl()
获取字符串值。我添加了另一个解释,解释了我试图实现的目标。@r2DoesInc:好吧,你已经解释过你想要获取一个值,我已经告诉过你如何使用枚举获取它。您还没有解释更广泛的目标。我希望能够仅根据设备类型确定论坛url。我把它和我之前问过的一些东西结合起来,制作一个拉链刮板。根据您的设备类型,它会从相应的子论坛为您的设备解析线程链接。我以前从未使用过枚举,您介意再展示一点示例代码,说明我在设置“type”后如何使用它吗?@r2DoesInc:不清楚您试图实现什么,但您可以调用
type.getForumUrl()
获取字符串值。我添加了另一个解释,解释了我试图实现的目标。@r2DoesInc:好吧,你已经解释过你想要获取一个值,我已经告诉过你如何使用枚举获取它。您还没有解释更广泛的目标。我希望能够仅根据设备类型确定论坛url。我把它和我之前问过的一些东西结合起来,制作一个拉链刮板。根据您的设备类型,它会从相应的子论坛为您的设备解析线程链接。关闭,但线程字符串需要设置为TORO值,并且只有在设备返回TORO时才会设置TORO。很抱歉,这个问题措词不当,我不知道如何确切地解释我需要什么。@r2DoesInc:我已经编辑了我的答案,以给出一个使用映射的解决方案,我认为这将比这个更具体。关闭,但线程字符串需要设置为va