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

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

关于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

回到顶部