在Java中是否可以在加载时注入对象?

在Java中是否可以在加载时注入对象?,java,spring,dependency-injection,Java,Spring,Dependency Injection,客户端应该能够只执行以下操作,而不应该知道从幕后注入的对象是什么 public interface Animal { public static void makeNoise() { } } public class Sheep implements Animal { public static void makeNoise() { } } 工厂模式仍然需要知道映射到具体类的键,所以我正在寻找其他选项。有没有一种方法可以覆盖Animal的类加载器并以某种方

客户端应该能够只执行以下操作,而不应该知道从幕后注入的对象是什么

public interface Animal {
    public static void makeNoise() {

    }
}

public class Sheep implements Animal {
    public static void makeNoise() {

    }
}

工厂模式仍然需要知道映射到具体类的键,所以我正在寻找其他选项。有没有一种方法可以覆盖Animal的类加载器并以某种方式注入sheep对象,而无需使用spring之类的框架?这类小示例的任何代码示例都将非常棒

您可以使用工厂模式。 以下是参考资料:。 或本参考:


祝你好运。

工厂方法无法解决这里的问题,因为客户端仍然需要知道一些映射到具体类的键。为什么?客户不需要像工厂那样知道“密钥”。工厂可以通过一些类路径扫描逻辑进行配置。您可以封装它。它将基于您如何使用该模式。这不是方法/构造函数DI的目标吗?JDK本身内置的最接近的东西是“服务提供者”JAR清单。这就是JDBC驱动程序用来注册自己的东西。这个问题似乎很相似:Animal是一个界面,在这里您有一个静态方法。这不是和界面本身有关吗?你所有的
makeNoise
方法都是静态的。你为什么需要它?我相信这是一个可能你想做一些像SLF4J?Logging impl需要提供一个
StaticLoggerBinder
Animal.makeNoise();