关于HarmonyOS 鸿蒙Next抽象类的匿名对象实现报错Object literal must correspond to some explicitly declared class or interface

关于HarmonyOS 鸿蒙Next抽象类的匿名对象实现报错Object literal must correspond to some explicitly declared class or interface 在API12中 我有一个抽象类 一个接口. 一个实现类

接口:

export interface Callback {
  onSuccess: (result: string) => void
}

抽象类

import { Callback } from './Callback';

export abstract class HttpCallback<T> implements ICallback {
  
  onSuccess(result: string): void {
    let objResult :T = JSON.parse(result)

    this.onSuccessObj(objResult)
  }

  protected abstract onSuccessObj: (objReuslt : T) => void
}

实现类

这里在t2就报错Object literal must correspond to some explicitly declared class or interface , 但是在API9 是正常运行的. 要怎么改呢? 总不至于我去创建个实现类吧?


更多关于关于HarmonyOS 鸿蒙Next抽象类的匿名对象实现报错Object literal must correspond to some explicitly declared class or interface的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

api9时,对语法限制还不够严格,到api12之后,就变得严格了,所以不让怎么写了,Object literal must correspond to some explicitly declared class or interface:必须要使用class或则interface声明对象,所以你需要创建一个实现类。这是api12语法要求

更多关于关于HarmonyOS 鸿蒙Next抽象类的匿名对象实现报错Object literal must correspond to some explicitly declared class or interface的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


所以匿名对象的方式是被取消了嘛?

是的,不让用了,

在HarmonyOS(鸿蒙)系统中,当你遇到关于“Next抽象类的匿名对象实现报错:Object literal must correspond to some explicitly declared class or interface”的问题时,这通常意味着你尝试以匿名方式实例化一个抽象类,但这样做在Java或鸿蒙的某些特定环境下是不被允许的。

鸿蒙系统虽然有自己的开发框架和API,但在处理抽象类和接口时,它遵循的是面向对象编程的基本原则。抽象类不能被直接实例化,它们必须被具体的子类实现后才能被实例化。如果你尝试通过匿名对象的方式直接实例化一个抽象类,编译器会报错,因为它无法确定这个匿名对象应该符合哪个具体类的定义。

解决这个问题的方法是:

  1. 确保你不是在尝试直接实例化一个抽象类。
  2. 如果你需要一个临时的类实现某个接口或继承某个抽象类,你应该显式地声明一个内部类或局部类来实现或继承,并在这个类中实现所有必要的方法。
  3. 检查你的代码,确认所有接口和抽象类的使用都是符合鸿蒙系统规范的。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部