Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用依赖项注入从反射创建对象?_Java_Reflection_Dependency Injection_Inject - Fatal编程技术网

Java 如何使用依赖项注入从反射创建对象?

Java 如何使用依赖项注入从反射创建对象?,java,reflection,dependency-injection,inject,Java,Reflection,Dependency Injection,Inject,我有一组支持javax.inject的类。但现在我需要使用反射调用这些类 o = clazz.newInstance(); ... method.invoke(o, parm1, param2 ); 但我不想调用newInstance,而是想知道是否有可能将其作为注入对象获取?我该怎么做呢?这不是一个在任何地方都适用的完整答案。但是,如果您有一个JNDI上下文,您可以使用以下内容来获取注入的对象。但是这里您需要知道jndi名称:例如:java:module/PasswordDataReposi

我有一组支持javax.inject的类。但现在我需要使用反射调用这些类

o = clazz.newInstance();
...
method.invoke(o, parm1, param2 );

但我不想调用newInstance,而是想知道是否有可能将其作为注入对象获取?我该怎么做呢?

这不是一个在任何地方都适用的完整答案。但是,如果您有一个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;
        }
    }