gpt4 book ai didi

java - Java 中使用依赖注入(inject)进行对象初始化

转载 作者:行者123 更新时间:2023-12-02 09:15:58 25 4
gpt4 key购买 nike

在尝试理解依赖注入(inject)原理时,我遇到了这个我无法理解的示例

   abstract class ExternalInvestmentBase {
private static ExternalInvestmentBase sImpl;

protected ExternalInvestmentBase() {
sImpl = this;
}

public static String supply(String request) throws Exception {
return sImpl.supplyImpl(request);
}

abstract String supplyImpl(String request)
throws Exception;
}


class InvestmentUtil extends ExternalInvestmentBase {

public static void init() {
new InvestmentUtil();
}


@Override
public String supplyImpl(String request) throws Exception {
return "This is possible";
}
}

public class IExternalInvestment {
public static void main(String[] args) throws Exception {
InvestmentUtil.init();

String rv = ExternalInvestmentBase.supply("tt");
System.out.println(rv);
}
}

主要问题是

  1. 基类中的“this”关键字如何工作?
  2. ExternalInvestmentBase.supply("tt"); 如何访问该对象?

最佳答案

关键字“this”指的是您当前的对象。 ExternalInvestmentBase 类作为对象分配给 sImpl。以下是 Oracle 文档对其含义的解释:https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html我不太清楚为什么代码会这样使用它,对我来说这看起来很奇怪。

因为您有 sImpl 将ExternalInvestmentBase 作为对象,所以方法 newExternalInvestmentBase 应调用 sImpl 上的 Supply 方法。这就是ExternalInvestmentBase.supply("tt");应该访问该对象。无法使用方法ExternalInvestmentBase.supply,因为它是从静态上下文调用的非静态方法。这会导致编译错误。

本文解释了正确的依赖注入(inject):https://www.javatpoint.com/dependency-injection-in-spring

关于java - Java 中使用依赖注入(inject)进行对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58988960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com