首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在枚举中调用超类型构造函数之前无法引用Const.getText

在枚举中调用超类型构造函数之前无法引用Const.getText是因为在枚举中,成员的初始化是在构造函数之前进行的。因此,在构造函数中无法直接引用枚举成员的方法或属性。

枚举是一种特殊的数据类型,用于定义一组命名的常量。它可以帮助我们更好地组织和管理代码中的常量值。在许多编程语言中,枚举成员可以具有自己的属性和方法。

对于这种情况,我们可以考虑将方法或属性定义在枚举成员的超类型中,然后在构造函数中调用超类型的构造函数来初始化成员。这样,我们就可以在枚举成员中引用超类型的方法或属性。

以下是一个示例,展示了如何在枚举成员中引用超类型的方法或属性:

代码语言:txt
复制
class Const {
  private text: string;

  constructor(text: string) {
    this.text = text;
  }

  getText(): string {
    return this.text;
  }
}

enum MyEnum {
  MEMBER1 = 1,
  MEMBER2 = 2,
  MEMBER3 = 3
}

class MyEnumWithText extends Const {
  constructor(text: string) {
    super(text);
  }
}

function getEnumText(enumValue: MyEnum): string {
  switch (enumValue) {
    case MyEnum.MEMBER1:
      return new MyEnumWithText("Text for MEMBER1").getText();
    case MyEnum.MEMBER2:
      return new MyEnumWithText("Text for MEMBER2").getText();
    case MyEnum.MEMBER3:
      return new MyEnumWithText("Text for MEMBER3").getText();
    default:
      return "";
  }
}

console.log(getEnumText(MyEnum.MEMBER1)); // 输出:Text for MEMBER1

在上述示例中,我们定义了一个名为Const的超类型,它具有一个私有属性text和一个公共方法getText。然后,我们定义了一个名为MyEnum的枚举,其中包含三个成员。接下来,我们定义了一个名为MyEnumWithText的子类型,它继承自Const,并在构造函数中调用了超类型的构造函数来初始化text属性。最后,我们定义了一个名为getEnumText的函数,根据传入的枚举值返回相应的文本。

这样,我们就可以在枚举成员中引用超类型的方法或属性,通过调用子类型的构造函数来初始化成员,并使用getText方法获取相应的文本。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为示例,实际选择产品时应根据具体需求进行评估和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Dart的语法详解系列篇(二)-- 类与函数八、Dart的类与函数

默认构造函数没有参数,并在调用无参数构造函数。 如果定义了空参构造,再去写实参构造,会报错(这一点和java不一样)。...{y}'); // } } 6.构造函数调用流程 默认情况下,子类构造函数调用类的无参构造函数类的构造函数构造函数体的开头被调用。如果 还使用初始化列表,则在调用之前执行。...执行顺序如下: 初始化列表 -> 类的无参数构造函数 -> 主类的无参数构造函数 类必须要有一个空参构造,如果类没有未命名的无参数构造函数,则必须手动调用的一个构造函数。...冒号(:)之后,构造函数体(如果有)之前指定构造函数。 例如下面的示例:TestChild类和其类Test类。...= (width * height)/2 { print('TestChild 有参构造'); } } 注意事项: 调用构造函数之前会计算构造函数的参数,所以参数可以是一个表达式。

2.8K30

Apple Swift编程语言入门教程

还有更简单的方法来字符串包含值:以小括号来写值,并用反斜线("")放在小括号之前。...构造范围忽略最高值,而用 ... 构造的范围则包含两个值。 5 函数与闭包 使用 func 声明一个函数调用函数使用他的名字加上小括号的参数列表。使用 -> 分隔参数的名字和返回值类型。...构造器的生命跟函数一样,除了会创建类的实例。每个属性都需要赋值,无论声明里还是构造器里。 使用 deinit 来创建一个析构器,来执行对象销毁时的清理工作。 子类包括其类的名字,以冒号分隔。...注意 EquilateralTriangle 的构造器有3个不同的步骤: 设置属性的值 调用类的构造器 改变类定义的属性的值,添加附加的工作来使用方法、getter、setter也可以在这里 如果你不需要计算属性... switch 枚举通过 .Hearts 引用,因为 self 的值是已知的。你可以在任何时候使用方便的方法。 使用 struct 创建结构体。结构体支持多个与类相同的行为,包括方法和构造器。

2K30

Dart语言指南(二) 顶

如果要使用父类定义的命名构造函数创建子类,则必须在子类实现该构造函数. 调用父类的非默认构造函数 默认情况下,子类构造函数调用类的未命名的无参数构造函数。...类的构造函数构造函数体的起始处被调用。 如果一个 初始化器列表 也被使用,它将在类被调用之前执行。...总而言之,执行顺序如下: 初始化程序列表 父类的无参构造 主类的无参构造 如果类没有未命名的无参数构造函数,则必须手动调用的一个构造函数。...冒号 (:)之后,构造函数体(如果有的话)之前指定构造函数. 下面的例子,Employee类的构造函数调用了其父类Person的命名构造函数....Initializer list 除了调用构造函数之外,还可以构造函数体运行之前初始化实例变量,用逗号分隔初始化器. class Point { num x; num y; Point

3K20

kotlin基础语法

我们可以像使用普通函数那样使用构造函数创建类实例: val site = Runoob() // Kotlin 没有 new 关键字 要使用一个属性,只要用名称引用它即可 site.name...号来引用 site.url 主构造器 主构造不能包含任何代码,初始化代码可以放在初始化代码段,初始化代码段使用 init 关键字作为前缀。...internal // 同一个模块可见 继承 Kotlin 中所有类都继承该 Any 类,它是所有类的类,对于没有类型声明的类是默认类: class Example // 从 Any 隐式继承...如果子类没有主构造函数,则必须在每一个二级构造函数中用 super 关键字初始化基类,或者代理另一个构造函数。...如果你使用匿名对象作为公有函数的 返回类型或者用作公有属性的类型,那么该函数或属性的实际类型 会是匿名对象声明的类型,如果你没有声明任何类型,就会是 Any。匿名对象 添加的成员将无法访问。

2.1K20

Java 中文官方教程 2022 版(四)

在下面的示例,Planet是一个表示太阳系行星的枚举类型。它们定义了常量质量和半径属性。 每个枚举常量都声明了质量和半径参数的值。这些值创建常量时传递给构造函数。...Java 要求常量在任何字段或方法之前定义。此外,当存在字段和方法时,枚举常量列表必须以分号结尾。 注意: 枚举类型构造函数必须是包私有或私有访问。它会自动创建在枚举体开头定义的常量。...子类从其类继承所有成员(字段、方法和嵌套类)。构造函数不是成员,因此它们不会被子类继承,但是可以从子类调用类的构造函数。...你可以子类声明没有的新方法。 你可以编写一个子类构造函数,隐式地或使用关键字super调用类的构造函数。 本课程的以下部分将扩展这些主题。...之前的名称(本例为FlyCar或OperateCar)必须引用直接定义或继承了被调用方法的接口。

13500

《Effective Java》——读后总结

类若在后续的发行版本获得新的方法,并且其子类覆盖与新方法有关的方法,则可能会发生错误。 复合:新的类增加一个私有域,引用现有类。它不依赖现有类的实现细节,对现有类进行转发。...没有外部实例的情况下,是无法创建非静态成员类的实例。每个非静态成员类的实例都包含一个额外的指向外部对象的引用,会导致外部实例垃圾回收时仍然保留。 匿名类没有名字,使用的同时被声明和实例化。...14、用 enum 代替 int 常量 枚举类型是指由一组固定的常量组成合法值的类型,通过公有的静态 final 域为每个枚举常量导出实例的类,没有构造器,是单例的泛型化。...int 枚举模式类型安全性和使用方便性没有任何帮助,打印的 int 枚举变量只是一个数字。 String 枚举模式虽然提供了可打印的字符串,但会导致性能问题,还依赖于字符串的比较操作。...25、努力使失败保持原子性 失败原子性:失败的方法调用应该使对象保持在被调用之前的状态。 设计不可变对象,永远不会使已有的对象保持不一致的状态。 对于可变对象: 执行操作之前检查参数的有效性。

1.4K10

读完《Effective Java》后我淦了 50 条开发技巧

构造函数只能看出两个参数,不知其意,后者更易理解。 性能 某些情况下,可以事先进行实例化一些对象,调用时直接调用即可,不需要进行改变。比如,Boolean。...否则用户调用时,只能使用完整构造函数,容易犯错且无法进行阅读。极不灵活。...问题来了: 并发 无法进行参数校验。 例如,只创建了对象,设置了标题,却没有尺寸,相当于创建了一个没有尺寸的警告框。 Android,大量的控件都使用了构造器Builder。...然而,缺失构造函数编译器会自动添加上一个无参的构造器。所以,需要提供一个私有化的构造函数。为了防止类内部误用,再加上一个保护措施和注释。...不过有三种情况下,无法使用for-each(注:jdk1.8已经很好的解决了这些问题)。

63030

Java接地气日常编码技巧

构造函数只能看出两个参数,不知其意,后者更易理解。 性能 某些情况下,可以事先进行实例化一些对象,调用时直接调用即可,不需要进行改变。比如,Boolean。...否则用户调用时,只能使用完整构造函数,容易犯错且无法进行阅读。极不灵活。...问题来了: 并发 无法进行参数校验。例如,只创建了对象,设置了标题,却没有尺寸,相当于创建了一个没有尺寸的警告框。 Android,大量的控件都使用了构造器Builder。...然而,缺失构造函数编译器会自动添加上一个无参的构造器。所以,需要提供一个私有化的构造函数。为了防止类内部误用,再加上一个保护措施和注释。...不过有三种情况下,无法使用for-each(注:jdk1.8已经很好的解决了这些问题)。

62430

Java不可或缺的50个小技巧,好用!

构造函数只能看出两个参数,不知其意,后者更易理解。 性能 某些情况下,可以事先进行实例化一些对象,调用时直接调用即可,不需要进行改变。比如,Boolean。...否则用户调用时,只能使用完整构造函数,容易犯错且无法进行阅读。极不灵活。...问题来了: 并发 无法进行参数校验。例如,只创建了对象,设置了标题,却没有尺寸,相当于创建了一个没有尺寸的警告框。 Android,大量的控件都使用了构造器Builder。...然而,缺失构造函数编译器会自动添加上一个无参的构造器。所以,需要提供一个私有化的构造函数。为了防止类内部误用,再加上一个保护措施和注释。...不过有三种情况下,无法使用for-each(注:jdk1.8已经很好的解决了这些问题)。

54600

Effecvtive Java Note

只要一个泛型机就能满足所有的builder,无论它们构建那种类型的对象 public interface Builder { public T build(); } 3.用私有构造器或者枚举类型强化...构造器决不能调用可覆盖的方法,无论是直接调用还是间接调用,如果违反了这个原则,很可能导致程序失败。类的构造子类的构造之前,所以,子类覆盖方法将会在子类的构造之前就先调用。...非静态成员类的实例方法内部,可以调用外围类实例上的方法,或者利用修饰过的this构造获得外围实例的引用。如果嵌套类的实例可以它外围类的实例之外独立存在,这个嵌套类必须是静态内部类。...泛型 没有泛型之前,从集合读取到的每一个对象都必须进行转换,如果有人不小心插入了类型错误的对象,在运行的转换处理就会出错。有了泛型之后,可以告诉编译器每个集合接受哪些对象类型。...要尽最大的努力消除这些警告,如果无法消除,可是可以证明引起警告的代码类型安全的,就可以尽可能小的范围,用@suppressWarnings注解禁止该警告,要用注释把禁止该警告的原因记录下来。

28810

Effecvtive Java Note

只要一个泛型机就能满足所有的builder,无论它们构建那种类型的对象 public interface Builder { public T build(); } 3.用私有构造器或者枚举类型强化...构造器决不能调用可覆盖的方法,无论是直接调用还是间接调用,如果违反了这个原则,很可能导致程序失败。类的构造子类的构造之前,所以,子类覆盖方法将会在子类的构造之前就先调用。...非静态成员类的实例方法内部,可以调用外围类实例上的方法,或者利用修饰过的this构造获得外围实例的引用。如果嵌套类的实例可以它外围类的实例之外独立存在,这个嵌套类必须是静态内部类。...泛型 没有泛型之前,从集合读取到的每一个对象都必须进行转换,如果有人不小心插入了类型错误的对象,在运行的转换处理就会出错。有了泛型之后,可以告诉编译器每个集合接受哪些对象类型。...要尽最大的努力消除这些警告,如果无法消除,可是可以证明引起警告的代码类型安全的,就可以尽可能小的范围,用@suppressWarnings注解禁止该警告,要用注释把禁止该警告的原因记录下来。

72450

Swift的属性,方法,下标脚本以及继承

这里我们调用函数时才对dataList进行訪问,而訪问的时候再依据它是否创建过进行是否载入的决定。...一个简单的枚举next()函数完毕了对self的切换。 类方法 上面提到过,类方法值类型如结构体使用static,而引用类型,比如类则使用class。...下标脚本(subscripts) 这个概念在Objective-C并没有,我们说Swift语法比較灵活和强大,在于它对结构体,枚举函数的强大功能进行了扩展和支持,比如函数Swift属于First-Class...在这里,下标脚本通常能够用于定义类,结构体和枚举,我们能够自己定义快捷的訪问方式通过使用下标脚本。对于同一个目标我们能够通过对其函数重载的方式定义多重方式的下标脚本訪问。...重写 使用overridekeyword 重写属性时,必须将名字和类型全写出来,才干使编译器去检查你重写的属性是否与类匹配。

84410

java-继承和多态

,则将自动地调用类的无参构造,如果没有类没有定义无参构造方法,编译报错。...this关键字的用途: 引用隐式参数 调用该类其他的构造方法 super关键字的用途: 调用类的方法 调用类的构造方法 调用其他构造方法的语句只能出现在构造方法的第一行 import java.util.Date...(不是所有雇员都是经理) 函数调用的绑定 当通过对象变量调用函数的时候,调用哪个函数这件事情叫做绑定 静态绑定:根据变量的声明类型来决定 动态绑定:根据变量的动态类型来决定 java默认绑定都是动态绑定...final类和final方法 如果想让一个类无法被继承,可以class关键字前加上final关键字,这个类的所有方法也将自动加上final关键字 如果想让某个类的方法不能被重写,可以方法名前加上final...类型转换 有时候希望将类转换为子类,这样就能调用子类的方法。但这一般是类的设计问题。应该避免这种转换。

35610

读完《Effective Java》: 我整理这 50 条技巧

构造函数只能看出两个参数,不知其意,后者更易理解。 性能 某些情况下,可以事先进行实例化一些对象,调用时直接调用即可,不需要进行改变。比如,Boolean。...否则用户调用时,只能使用完整构造函数,容易犯错且无法进行阅读。极不灵活。...问题来了: 并发 无法进行参数校验。 例如,只创建了对象,设置了标题,却没有尺寸,相当于创建了一个没有尺寸的警告框。 Android,大量的控件都使用了构造器Builder。...然而,缺失构造函数编译器会自动添加上一个无参的构造器。所以,需要提供一个私有化的构造函数。为了防止类内部误用,再加上一个保护措施和注释。...不过有三种情况下,无法使用for-each(注:jdk1.8已经很好的解决了这些问题)。

49020

《Effective Modren C++》 进阶学习(上)

类型推导如下进行: 和之前一样,如果expr的类型是一个引用,忽略这个引用部分。 如果忽略引用之后expr是const,那就再忽略const。...要求变窄转换 只有当传入的参数在编译器上无法转换成std::initializer_list的T类型,才会匹配普通的构造函数。..., red }; 两者差异在于: 未限域枚举枚举常量 (black、white) 与枚举类型(Color)同一作用域;限域枚举枚举常量(black、white)枚举类型的作用域下...② 限域枚举枚举名是强类型,未限域枚举枚举名会隐式转换为整型(现在,也可以转换为浮点类型) 11....理解特殊成员函数的生成 C++术语,特殊成员函数是指自己生成的函数。C++98有四个:默认构造函数、析构函数、拷贝构造函数和拷贝赋值函数

17020

效率编程 之「创建和销毁对象」

静态工厂方法能够为重复的调用返回相同的对象,这样有助于类总能严格控制某个时刻哪些实例应该存在。 静态工厂方法与构造器不同的第三大优势在于,它们可以返回原返回类型的任何子类型的对象。...例如在 JDK 1.5 引入的类java.util.EnumSet就没有公有构造器,仅有静态工厂方法,它们返回两种实现类之一,具体则取决于底层枚举类型的大小:如果它的元素有 64 个或者更少,就像大多数枚举类型一样...在这种模式下,有一个很严重的缺点,那就是:构造过程被分到了几个调用,有可能导致JavaBean构造过程处于不一致的状态。...所有的构造器都必须显式或隐式地调用构造器,在这种情况下,子类就没有可访问的构造器可调用了。...如果类(不是Object)有终结方法,并且子类覆盖了终结方法,子类的终结方法就必须手动调用类的终结方法。我们应该在一个try块终结子类,并在相应的finally块调用类的终结方法。

50130

【笔记】《深入理解C++11》(上)

, 不会被自动生成 委派构造 初始化列表可以调用构造函数了, 此时称为委派构造函数...., 例如当存在非POD成员且这个成员有非平凡的构造函数时, 这个union的默认构造将被删除 匿名的union对外是开放的, 因此放在类的声明可以按照构造函数的不同而初始化为不同的类型, 此时类被称为枚举式的类...函数模板是根据我们的实参类型调用时进行特化并实例化的, 具体来说匹配遵循以下步骤: 首先对于一次调用, 编译器查找所有具有此名称的函数和实例化的模板函数表 在这些函数中进行比较, 将不可行的函数剔除,...而且由于其本质是常量数值的原因, enum成员总是可以被隐式转换为整型, 这很容易导致比较两个不同的枚举名称时出现错误的结果 C++11之前会通过类结构将枚举封装, 并建立新的转换和比较函数覆盖原先的操作...{ Name0, Name1 };直接获得了强作用域, 转换限制, 可指定底层类型三大优点 其中通过上面代码类型名冒号后面写所需的type, 我们可以指定枚举属于type类型的元素的集合, 同时原生的

1.8K20

C#反射机制

反射是.NET的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。...(1)使用Assembly定义和加载程序集,加载程序集清单列出模块,以及从此程序集中查找类型并创建该类型的实例。...(2)查看类构造方法 我们可以根据对象进而查看内部的构造函数以及参数。...(3)用构造函数动态生成对象 我们使用构造函数动态创建一个新的对象,如下代码所示: (4) 用Activator生成对象 上面代码,Activator.CreateInstance第一个参数为需要创建对象的类型...,后面的为调用构造函数的参数,上面的三种格式都可以,只是调用构造函数不同而已。

14830

Swift 面向对象解析(一)

Swift枚举和结构体是值类型的,类是引用类型。值类型引用类型的区别,我们后面说,先知道这一点。        ...Swift的类、结构体、枚举中都可以定义(属性、方法、下标、构造体、嵌套类型),下面我们一个一个的用我小小的认识说一下它们,我也会给大家一些我看到的很不错的博客链接,方便大家更好的掌握,理解Swift...比如下面的例子:         给大家看看我们OC是怎么定义枚举的,大家对比着理解: /** 发送的消息类型 */ enum ZxMessageType: Int { case...四:属性观察者      willSet(newValue):  被观察的属性即将被赋值之前自动调用该方法。      ...使用static 或者 class 修饰的方法属于该类型的类方法,是可以使用该类型本身来调用。class 一般是类里面修饰, static 一般用在结构体和枚举修饰。

1.7K70

Oracle Java类和对象

编译器自动为任何没有构造函数的类提供无参数的默认构造函数。此默认构造函数调用类的无参数构造函数。在这种情况下,如果类没有无参数构造函数,编译器会发出抱怨,因此您必须验证它有无参数构造函数。...初始化:新运算符后面是对构造函数调用构造函数初始化新对象。 声明变量以引用对象 之前,您了解到要声明变量,您可以编写: type name; 这会通知编译器,您将使用名称引用类型为type的数据。...您也可以自己的行声明引用变量。例如: Point originOne; 如果像这样声明originOne,那么实际创建并分配对象之前,它的值将无法确定。简单地声明引用变量不会创建对象。...要引用点字段x,构造函数必须使用this.x。 将this与构造函数一起使用 构造函数,还可以使用this关键字调用同一类的另一个构造函数。这样做称为显式构造函数调用。...此外,当存在字段和方法时,枚举常量列表必须以分号结尾。 ==注意:枚举类型构造函数必须是包私有或私有访问。它会自动创建在枚举体开头定义的常量。不能自己调用枚举构造函数

79500
领券