我可以在Java中动态引用字段类吗?
我有一个名为我可以在Java中动态引用字段类吗?,java,dynamic,reference,field,Java,Dynamic,Reference,Field,我有一个名为Bird的类,它由3个字符串字段组成,每个字段都是不同语言的名称,比如Bird.lang1,Bird.lang2,Bird.lang3。我有一个叫allbirds的Bird实例 现在我想用用户选择的语言创建一个包含所有鸟类名称的字符串列表,该列表存储在lang变量中,该变量的值为lang1,lang2,lang3中的一个。我需要这样做数百次(调用此次数N) 当然,我可以对所有Bird元素执行迭代器,并将相应字段添加到lang的字段中。但这意味着在3xnxbird.size()(即,数
Bird
的类,它由3个字符串字段组成,每个字段都是不同语言的名称,比如Bird.lang1
,Bird.lang2
,Bird.lang3
。我有一个叫allbirds
的Bird实例
现在我想用用户选择的语言创建一个包含所有鸟类名称的字符串列表,该列表存储在lang
变量中,该变量的值为lang1
,lang2
,lang3
中的一个。我需要这样做数百次(调用此次数N
)
当然,我可以对所有Bird元素执行迭代器,并将相应字段添加到lang
的字段中。但这意味着在3xnxbird.size()
(即,数十万!!)条件查询中需要测试用户选择的语言
我能做点像这样的事吗
varfield = lang.toField();
for (Bird birdy : allbirds)
ListOfAllBirds.add(birdy.varfield);
也就是说,我可以引用带有变量的字段吗??这将为我节省大量的条件查询
谢谢 我使用字符串数组的意思是这样的(如果您不想像Vulcan建议的那样将语言设置更改为int) 然后,您的类将如下所示:
class Bird
{
public String[] names = {"name1", "name2", "name3"};
}
而不是
class Bird
{
public String lang1 = "name1";
public String lang2 = "name2";
public String lang3 = "name3";
}
这样,您只需检查用户选择的语言一次(找到索引),然后就可以遍历所有鸟类,并根据索引获得正确的名称。您不能将字符串存储在字符串数组中,然后通过索引访问它们吗?@MAV:当然。但这将如何为我节省资源呢?这是否意味着在任何情况下,在许多操作中都会出现?@LuisA.Florit如果您的语言设置是一个与正确索引对应的int,它将非常有效。@Vulcan:不,
lang
是一个字符串。然后将其更改为与每种语言对应的int
,然后采用这种方法。对不起,我不明白。您的代码中有什么类型的对象名称
?即使names
是一个int[]
我也不明白这是怎么回事。。。您的名称
应该类似于ClassField[]
,但不存在。@LuisA.Florit更新了我的答案。现在更有意义了吗?嗯。。。我明白你的意思。将尝试实施该计划,并反馈信息。谢谢!!!实际上,名称可以是映射,而不是字符串[3]
是的。。。。现在我明白你的意思了。我也明白我的问题是多么愚蠢!你的解决方案很好。非常感谢你对这个新手的耐心!
class Bird
{
public String lang1 = "name1";
public String lang2 = "name2";
public String lang3 = "name3";
}