HarmonyOS鸿蒙Next中一个接口中只有一个方法,能不能在实现接口的时候执行默认的方法

HarmonyOS鸿蒙Next中一个接口中只有一个方法,能不能在实现接口的时候执行默认的方法 cke_420.png

实现一个接口

cke_1088.png

把接口当成参数传递

传递接口的时候除了实现该接口,可以不可以直接把接口匿名在参数里实现


更多关于HarmonyOS鸿蒙Next中一个接口中只有一个方法,能不能在实现接口的时候执行默认的方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复
export type WVBjs = (data:string) => void;
class WebTest {
  jsCall:WVBjs
  constructor(jsCall:WVBjs) {
    this.jsCall = jsCall
  }
}
function myJsCall(data:string) : void{
  console.log(data + ' of myJsCall')
}
let webTest = new WebTest(myJsCall)
webTest.jsCall('data')

更多关于HarmonyOS鸿蒙Next中一个接口中只有一个方法,能不能在实现接口的时候执行默认的方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以按照这种定义方式 就可以作为传参使用了。

export type WVBjs = (data: string, key: string, value: object) => void;

在HarmonyOS鸿蒙Next中,若接口仅含一个方法,可通过接口默认方法实现默认行为。使用default关键字在接口中定义默认方法,实现类可直接继承该方法而无需重写。若需自定义实现,则在实现类中重写该方法即可。此机制允许在保持接口简洁性的同时提供默认功能。

在HarmonyOS Next中,如果接口只有一个抽象方法,它本质上是一个函数式接口(Functional Interface)。你可以使用Lambda表达式或方法引用来直接实现该接口,而不需要显式定义一个实现类。

例如,假设接口定义如下:

public interface MyInterface {
    void doSomething();
}

在传递接口参数时,可以直接使用Lambda表达式匿名实现:

someMethod(() -> {
    // 实现doSomething的具体逻辑
    System.out.println("执行默认方法");
});

或者使用方法引用(如果已有匹配的方法):

someMethod(this::myExistingMethod);

这种方式简洁高效,符合函数式编程风格,无需额外编写实现类。

回到顶部