gpt4 book ai didi

java - 尝试将对象存储在该类型的变量中时,类型不兼容

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

我不明白为什么我可以返回一个实现接口(interface)的对象,但编译器在尝试将该对象存储在该类型的变量中时会提示。

简单的界面:

public interface ITest {

}

现在是一个实现接口(interface)的简单类:

public class Test implements ITest {

}

好的,所以我的理解是:A Test ITest

现在的问题是:

public class Tester {
public static void parameterTest(ITest test) {

}

public static ITest returnValueTest() {
return new Test(); // no compiler error here
}

public static void main(String[] args) {
Test test = new Test();

Tester.parameterTest(test);

test = Tester.returnValueTest(); // compiler complains here
}
}

变量test来自类型Test因此ITest 。我可以传给Tester.parameterTest(ITest test)没有提示。

但尝试从 Tester.returnValueTest() 检索值并将其放入变量test中失败并显示

Incompatible types: ITest cannot be converted to Test

尽管该方法返回 Test编译器不会提示的对象。

为什么会这样呢? 为什么我可以返回 Test对象并符合方法的返回类型 ITest但不能将此返回的对象放入 Test 类型的变量中

最佳答案

您没有返回 Test 对象,而是返回 ITest 实例。

所有 Test 对象都实现 ITest,但并非所有 ITest 实例都必须是 Test 对象。

关于java - 尝试将对象存储在该类型的变量中时,类型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58368065/

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