qq_20799591 2023-03-18 11:54 采纳率: 0%
浏览 42

这个是怎么实现的,我想自己实现接口缺老是报错。

这是Java接口实现的取反操作。

img


我自己实现的取反

img


这里的返回值是复制Java的。
不使用表达式的话是不是这样?

img


可是这样就会报错。。不知道咋回事,如果使用表达按照Java自带写的就不会。

  • 写回答

3条回答 默认 最新

  • MarkHan_ 2023-03-18 12:39
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    根据您提供的代码,似乎您在第二种实现中有一个小错误。在实现 negate() 方法时,您应该返回一个新的 MyDemo 实例,并实现其 test() 方法。而在您的代码中,您在 negate() 方法内部又调用了 this.test() 方法,导致了无限递归和栈溢出错误。

    下面是一种正确的实现方式,类似于您的第二种尝试:

    public interface MyDemo<T> {
        boolean test(T t);
    
        default MyDemo<T> negate() {
            return new MyDemo<T>() {
                @Override
                public boolean test(T t) {
                    return !MyDemo.this.test(t);
                }
            };
        }
    }
    
    

    这里,我们创建了一个新的 MyDemo 实例,并在其 test() 方法中调用原来的 MyDemo 实例的 test() 方法并取反其返回值。注意,在匿名内部类中使用外部类的实例变量需要使用 外部类.this.变量名 的形式。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月18日

悬赏问题

  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除
  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题