gpt4 book ai didi

java - 实现两个接口(interface)的变量

转载 作者:搜寻专家 更新时间:2023-11-01 02:37:38 24 4
gpt4 key购买 nike

我见过很多类似的问题,但我认为没有一个是完全同构的,也没有一个能完全回答我的问题。

假设有两个接口(interface),TreeNamed .进一步假设我得到一个方法,其签名是

public <T extends Tree & Named> T getNamedTree();

我怎样才能将返回值保存到一个变量中,同时仍然保留它实现了 Tree 的信息?和 Named ?我找不到像这样声明变量的方法

public <T extends Tree & Named> T mNamedTree;

并尝试将其转换为扩展 Tree 的接口(interface)和 Named导致类转换异常。

最佳答案

假设没有第三个接口(interface)同时继承NamedTree,您不能静态地保留关于这两个接口(interface)的信息。编译器将要求您为其中之一或两者进行强制转换:

Object namedTree = getNamedTree();
Tree asTree = (Tree)namedTree;
Named asNamed = (Named)namedTree;

两次转换都应该成功。

如果您对该类的 API 设计有影响,请要求作者引入一个结合了 NamedTree 的接口(interface),并返回该接口(interface)的一个实例接口(interface)。

关于java - 实现两个接口(interface)的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43531649/

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