我有一组支持javax.inject
的类。但现在我需要使用反射来调用这些类。
o = clazz.newInstance();
...
method.invoke(o, parm1, param2 );
但是我不想调用newInstance()
,而是想知道是否有可能将其作为注入对象?我该怎么办?
答案 0 :(得分:0)
这不是一个适用于任何地方的完整答案。但是如果您有JNDI上下文,则可以使用以下内容来获取注入的对象。 (但在这里你需要知道jndi的名字:例如:java:module/PasswordDataRepository
)
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public static <T> T getValue(String jndiName, Class<T> type)
{
try {
Context ctx = new InitialContext();
return (T)ctx.lookup(jndiName);
} catch (NamingException e) {
e.printStackTrace();
return null;
}
}