假设我有实例A,其中我与实例B和C有依赖关系.B和C也有与B1和C1的依赖关系
可以使用反射和包字符串作为“B.B1”和“C.C1”从A中获取这些实例。
这就像是
B1 b1 = A.getMagicallyTheInstance("B.B1");
C1 c1 = A.getMagicallyTheInstance("C.C1");
答案 0 :(得分:2)
您可以使用java反射或OGNL来实现。 OGNL用于对象图表符号语言及其想要使用的符号。但是如果你想使用反射,你必须遵循这些步骤。
顺便说一句getResourceAsStream
用于读取类路径资源作为inputStream。据我所知,它注意到反思。
但是在OGNL中它更简单。
A
就是这样。
我刚刚意识到你的Spring标签。您可以轻松地使用Spring EL实现它。这是一个例子:
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("b.b1");
// I Assume A has a field name b, and B has a field name b1
B1 b1 = (B1) exp.getValue(aInsantece);
答案 1 :(得分:1)
根据bhdrkn的建议,OGNL可能就是这样。
但是,如果您想使用简单反射,您可以执行以下操作:
Container instance = new Container();
Class<? extends Container> klass = instance.getClass();
Field field = klass.getField("value");
String actualValue = (String) field.get(instance);
其中Container看起来像这样:
public class Container {
public String value = "default";
}