Java 从具有包和名称的实例获取dependecy实例
假设我有实例A,其中我与实例B和C有依赖关系。B和C也与B1和C1有依赖关系 可以使用反射和包字符串“B.B1”和“C.C1”从A获取这些实例 大概是Java 从具有包和名称的实例获取dependecy实例,java,spring,Java,Spring,假设我有实例A,其中我与实例B和C有依赖关系。B和C也与B1和C1有依赖关系 可以使用反射和包字符串“B.B1”和“C.C1”从A获取这些实例 大概是 B1 b1 = A.getMagicallyTheInstance("B.B1"); C1 c1 = A.getMagicallyTheInstance("C.C1"); 您可以使用java反射或。OGNL是对象图表示法语言及其表示法,就像您想要使用的一样。但是如果你想使用反射,你必须遵循以下步骤 得到一
B1 b1 = A.getMagicallyTheInstance("B.B1");
C1 c1 = A.getMagicallyTheInstance("C.C1");
您可以使用java反射或。OGNL是对象图表示法语言及其表示法,就像您想要使用的一样。但是如果你想使用反射,你必须遵循以下步骤
getResourceAsStream
用于将类路径资源作为inputStream读取。据我所知,它没有任何反映
但在OGNL中要简单得多
A的一个实例
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);
正如bhdrkn所建议的那样,OGNL可能是一条出路 但是,如果要使用纯反射,可以执行以下操作:
Container instance = new Container();
Class<? extends Container> klass = instance.getClass();
Field field = klass.getField("value");
String actualValue = (String) field.get(instance);
public class Container {
public String value = "default";
}
我修改了解释,我希望实例而不是类创建一个新实例。我认为bhdrkn的答案可能就是您想要的。