java - 如何在Java中使用数组值作为字段? a1.section[2] = 1;

标签 java android

刚接触 Java,无法弄清楚我希望什么是简单的事情。

我将“部分”保存在数组中:

//Section.java
public static final String[] TOP = {
    "Top News",
    "http://www.mysite.com/RSS/myfeed.csp",
    "top"
};

我想做这样的事情:

Article a1 = new Article();
a1.["s_" + section[2]] = 1;  //should resolve to a1.s_top = 1;

但它不会让我这么做,因为它不知道“节”是什么。 (我确信经验丰富的 Java 人员会对这种尝试感到畏缩......但我的搜索结果却没有找到如何做到这一点)

澄清:

我的文章 mysqlite 表具有文章“部分”的字段:

s_top
s_sports
...etc

从 XML 文件进行导入时,我希望将该字段设置为 1(如果该字段属于该类别)。我可以有 switch 语句:

//whatever the Java version of this is
switch(section[2]) {
    case "top": a1.s_top = 1; break;
    case "sports": a1.s_sports = 1; break;
    //...
}

但我认为将其写成一行会容易得多:

a1["s_"+section[2]] = 1;

最佳答案

在 Java 中,按照你想要的方式做你想做的事情是一件很痛苦的事情。

如果您不想使用 switch/case 语句,您可以使用反射来提取您要设置的成员属性:

Class articleClass = a1.getClass();
Field field = articleClass.getField("s_top");
field.set(a1, 1); 

它会起作用,但可能会很慢,而且这是解决此问题的非典型方法。

或者,您可以存储 Map<String>Map<String,Boolean>在你的Article里面类,并且在Article内有一个公共(public)函数叫putSection(String section) ,并且在迭代时,您可以将各个部分字符串(或字符串/值映射)放入每个 Article 的映射中。因此,不要静态定义哪些部分可能存在并给出每个 Article是或否,您可以允许可能的部分列表是动态的并基于您的 xml 导入。

关于java - 如何在Java中使用数组值作为字段? a1.section[2] = 1;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11350299/

相关文章:

java - 在 Java 中编译或输出调试代码

Java 优化 : local variable or function call

android - 如何获取安卓手机的主邮箱账号?

Wi-Fi无法上网时Android Lollipop默认使用Mobile Data?

c# - 如何为 .Net 构建 PDFBox

java - 我可以在 Java 的其他方法中使用在一个方法中定义的局部变量的值吗?

java - OnClickListener 未按预期工作

Android 如何从剪贴板 onPrimaryClipChanged 获取字符串?

java - H2 - 使用索引号更新每行(0,1,2,3,..)

android - Objective-C 然后呢?安卓、Windows 7、黑莓