implements Contro-6ren">
gpt4 book ai didi

java - 泛型泛型 : "Syntax error on token "extends",,预期”

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:34 26 4
gpt4 key购买 nike

public interface View{...

public interface Control<V extends View>{...

public class RemoteControl<C extends Control<V extends View>> implements Control<V>{...

在 RemoteControl 类的“V extends View”上给我一个“token 'extends', expected”的“语法错误”。

我想下面的选择是可能的

public class RemoteControl<C extends Control<V>,V extends View> implements Control<V>
{...

我仍然想知道这是否不能以更隐式的方式完成,因为后者需要对 View 进行冗余声明。即:

public class TVRemoteControl extends RemoteControl<TVControl,TvView> implements TVControl{...

对比

public class TVRemoteControl extends RemoteControl<TVControl> implements TVControl{...

也许我又被困在一个盒子里了,但有没有可能以更优雅的方式获得“泛型泛型”

最佳答案

你建议:

I guess the following alternative was possible

public class RemoteControl<C extends Control<V>,V extends View> implements Control<V>{}

这是正确的解决方案,尽管我通常会把它写成(为了便于阅读):

public class RemoteControl<V extends View, C extends Control<V>> implements Control<V>{}

您正在输入 RemoteControlControl 上对象也是在 extends View 的对象上键入的.因此,您需要提供 View 的实现键入 Control输入您的 RemoteControl 的对象对象。

我想您可以将您的问题解释为,为什么我必须提供 V - 不应该从 <C extends Control<V>> 中隐含吗? .对此,答案是,您需要为 V 提供类型确保Control的正确类型提供(即它 extends Control<V> )

如果你不关心什么类型View Control object 已键入,您无需键入 ControlRemoteControl :

public class RemoteControl<C extends Control> implements Control{}

然而,事实Control键入 V extends ViewRemoteControl implements Control<V> ,而是建议你做...

关于java - 泛型泛型 : "Syntax error on token "extends",,预期”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953029/

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