【发布时间】:2014-06-15 07:45:09
【问题描述】:
我有两个班级,A 和 B。
B 包含 A 的实例。我想按名称从 B 返回 A 的实例:
class A
{
public String name;
public A (String name)
{
this.name = name;
}
}
class B
{
public A a1;
public A a2;
public A a3;
public B ()
{
this.a1 = new A ("a1");
this.a2 = new A ("a2");
this.a3 = new A ("a3");
}
public A get_A_byName (String name)
{
// Is it possible to write something like this? B will always contain only instances of A
for (A a : B.variables)
{
if (a.name.equals(name))
{
return a;
}
// Or in case A doesn't have a variable "name", can I get an A instance by its declared name in B?
if (a.getClass().getName().equals(name))
{
return a;
}
}
}
}
是否可以做代码的 cmets 中描述的事情?提前致谢。
【问题讨论】:
-
为什么不使用简单的
if和else呢?if(a1.name.equals(name)) else if(a2.name.equals(name) ... -
你应该看看适当的收藏。例如,使用 HashMap
很容易实现这一点。比拥有一长串 if-else 要好得多。 -
如果您一心要迭代,即使是一个简单的数组也能支持这一点。
-
使用反射可以实现这一点 - 但 kviiri 指出了一个更简单的选择。
-
@user1928742:不排除 also 使用哈希映射来提供您需要的名称解析。
标签: java instance instance-variables