Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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中使用数组值作为字段?a1.第[2]节=1;_Java_Android - Fatal编程技术网

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

如何在Java中使用数组值作为字段?a1.第[2]节=1;,java,android,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 a

刚接触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;
但它不会让我,因为它不知道“部分”是什么。(我相信经验丰富的爪哇人会对这一尝试感到畏缩……但我的搜索结果在如何做到这一点上是空白的)

澄清:

My article mysqlite表中有文章“部分”的字段:

s_top
s_sports
...etc
从XML文件导入时,如果该字段属于该类别,我希望将其设置为
1
。我可以有一句话:

//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;

如果试图从对象获取属性,则需要确保对象中有“getter”和“setter”。您还必须确保在文章类中定义
部分

比如:

class Article{
  String section;   

  //constructor
  public Article(){
  };

  //set section
  public void setSection(Section section){
  this.section = section;
}
  //get section
  public String getSection(){
  return this.section; 

}

如果试图从对象获取属性,则需要确保对象中有“getter”和“setter”。您还必须确保在文章类中定义
部分

比如:

class Article{
  String section;   

  //constructor
  public Article(){
  };

  //set section
  public void setSection(Section section){
  this.section = section;
}
  //get section
  public String getSection(){
  return this.section; 

}
Java变量不是“动态的”,例如取消actionscript的链接。您不能在编译时不知道的情况下调用或分配变量(当然,使用反射可以,但它太复杂了)

因此,是的,解决方案是使用一个开关大小写(仅适用于java 1.7中的字符串),或者使用hashmap或等效程序

或者,如果是关于导入XML,也许您应该看看Java变量不是“动态的”,例如取消actionscript链接。您不能在编译时不知道的情况下调用或分配变量(当然,使用反射可以,但它太复杂了)

因此,是的,解决方案是使用一个开关大小写(仅适用于java 1.7中的字符串),或者使用hashmap或等效程序


或者,如果是关于导入XML,也许您应该看看Java中的

,以您尝试的方式做您想做的事情是一件痛苦的事情

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

Class articleClass = a1.getClass();
Field field = articleClass.getField("s_top");
field.set(a1, 1); 
它会起作用,但可能会很慢,这是解决这个问题的一种非典型方法


或者,您可以将
映射
映射
存储在
文章
类中,并在
文章
中有一个名为
putSection(String section)
的公共函数,在迭代时,您可以放置各种节字符串(或字符串/值映射)进入每个
文章的地图
。因此,与其静态地定义哪些部分可能存在,并给每一篇
文章一个“是”或“否”,不如允许可能的部分列表是动态的,并基于您的xml导入。

在Java中,以您尝试的方式做您想做的事情是一种痛苦

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

Class articleClass = a1.getClass();
Field field = articleClass.getField("s_top");
field.set(a1, 1); 
它会起作用,但可能会很慢,这是解决这个问题的一种非典型方法


或者,您可以将
映射
映射
存储在
文章
类中,并在
文章
中有一个名为
putSection(String section)
的公共函数,在迭代时,您可以放置各种节字符串(或字符串/值映射)进入每个
文章的地图
。因此,与其静态地定义哪些部分可能存在,并给每个
文章
一个是或否,不如允许可能的部分列表是动态的,并基于xml导入。

Eh?我们可以看看
文章
类吗?也许你想要的是
映射
(TreeMap/HashMap)?你为什么要实现这一点?我已经对上面的问题进行了澄清。希望这能更好地解释。(为什么文章类很重要?它有字段,似乎与我的问题无关)嗯?我们可以看看
文章
类吗?也许你想要的是
映射
(TreeMap/HashMap)?你为什么要实现这一点?我已经对上面的问题进行了澄清。希望这能更好地解释。(为什么文章类很重要?它有字段,似乎与我的问题无关)你的第二个描述并不完全符合我的项目(我有一组特定的“部分”,需要在数据库中存储每篇文章所属的部分。但是-你的答案是1)这样做很痛苦,2)在文章模型中创建一个函数-这很有效-谢谢!)你的第二个描述并不完全符合我的项目(我有一组特定的“部分”,需要在数据库中存储每篇文章所属的部分。但是-你的回答1)这样做很痛苦,2)在文章模型中创建一个函数-这很有效-谢谢!)他被认为是有帮助的。由于提供了替代解决方案,其他答案被选中。谢谢他被认为是有帮助的。由于提供了替代解决方案,其他答案被选中。谢谢