如何在Java中使用数组值作为字段?a1.第[2]节=1;
刚接触Java,我不知道我希望什么是简单的事情 我将“节”保留在一个数组中:如何在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
//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)在文章模型中创建一个函数-这很有效-谢谢!)他被认为是有帮助的。由于提供了替代解决方案,其他答案被选中。谢谢他被认为是有帮助的。由于提供了替代解决方案,其他答案被选中。谢谢