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

有没有办法在初始化枚举时传递一个变量,而不是传递java中的实际值?

在Java中,初始化枚举时只能传递实际值,而不能传递变量。枚举是一种特殊的数据类型,它的值是预定义的有限集合。每个枚举常量都是该枚举类型的一个实例,它们在定义时就确定了自己的值。

然而,如果你想在初始化枚举时传递一个变量,可以考虑使用构造函数和实例方法来实现类似的功能。你可以在枚举中定义一个带有参数的构造函数,然后在枚举常量中调用该构造函数来传递变量。

下面是一个示例:

代码语言:txt
复制
enum MyEnum {
    VALUE1("Value 1"),
    VALUE2("Value 2"),
    VALUE3("Value 3");

    private String description;

    private MyEnum(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }
}

public class Main {
    public static void main(String[] args) {
        System.out.println(MyEnum.VALUE1.getDescription());
        System.out.println(MyEnum.VALUE2.getDescription());
        System.out.println(MyEnum.VALUE3.getDescription());
    }
}

在上面的示例中,我们定义了一个带有描述信息的枚举类型MyEnum,并在构造函数中传递了一个变量description。通过调用枚举常量的getDescription()方法,我们可以获取到传递的变量值。

这种方式虽然不能在初始化枚举时直接传递变量,但可以通过构造函数间接传递变量,并在枚举常量中使用。这样可以实现类似的效果。

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

相关·内容

Java基础重构-面向对象

构造器引用该构造器正在初始化对象 方法引用调用该方法对象。 this关键字最大作用就是让类中一个方法,访问该类里一个方法或实例变量。...也就是说,表面上看起来某些方法可以被独立执行,但实际上环视使用this或者 类 作为调用者。 Java参数传递可以引用传递吗? 不可以,Java参数传递方式只有一种,传递。...所谓传递,就是将实际参数值副本(复制品)传入方法内,参数本身不会受到影响。 我们有时候见到 使用 参数传递 某些对象。...看起来好像是引用传递,但其实不是,这里传递也只是一个对象在内存地址而已,并不是真正把 对象引用传递过去。 形参个数可变参数是什么?...实际上,当程序员调用构造器,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象已经产生了——这些操作系统构造器执行前就都已经完成了。

64130

Java基础:Java基本概念

与大多数程序设计语言一样,Java注释也不会出现在可执行程序。因此,可以源程序根据需要添加任意多注释,不必担心可执行代码会膨胀。...注释 二、变量与常量 1、声明变量 2、变量初始化 3、常量 4、枚举类型变量 三、方法 1、方法构成 2、方法参数传递 3、方法重载 ---- 一、Java 注释 与大多数程序设计语言一样,Java...1、声明变量 Java ,每个变量都有一个类型(type)。声明变量变量类型位于变量名之前。...参数列表:定义方法头中变量称为形式参数或参数,简称形参。当调用方法,需要给参数传递一个,称为实际参数,简称实参。参数列表指明方法参数类型、次序和数量。...实参必须与方法签名形参在次序上和数量上匹配,类型上兼容:当参数类型是基本数据类型传递是实参,因此不能对实参进行修改。

33160

java面试小题系列(一)

String是引用类型不是基本类型,引用类型声明变量是指该变量在内存实际存储一个引用地址,实体。引用类型包括类、接口、数组等。String类还是final修饰。...什么是传递和引用传递传递是对基本型变量而言,传递是该变量一个副本,改变副本不影响原变量. 引用传递一般是对于对象型变量而言,传递是该对象地址一个副本, 并不是原对象本身 。...一般认为,java传递都是传递. java实例对象传递是引用传递 。...当一个对象实例作为一个参数被传递到方法,参数就是对该对象引用。对象属性可以在被调用过程中被改变,但对对象引用改变是不会影响到调用者。 描述一下JVM加载class文件原理机制?...由于Java跨平台性,经过编译Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化

55330

Java基础】 Java传递还是引用传递

传递和引用传递最大区别是传递过程中有没有复制出一个副本来,如果是传递副本,那就是传递,否则就是引用传递。...当你通过 new 关键字创建一个对象,JVM 会在堆内存为对象实例分配内存。堆是一个运行时数据区,它被所有线程共享。堆上分配内存将由Java垃圾收集器管理,不需要程序员手动释放。...也就是说,堆空间实际上存放是new User()相关内容,user是Java对堆空间中这个地址引用。...实际上,调用printName方法,JVM已经栈帧创建了一个局部变量user,调用时main方法将本身user传递到了printName堆栈user,这个过程也可以理解成创建了副本。...传递和引用传递最大区别是传递过程中有没有复制出一个副本来,如果是传递副本,那就是传递,否则就是引用传递

11710

你还在用plusargs传递参数吗?来试试这个玩法~

这里需要注意下,uvm_field_int只是声明这个变量按照整数数据类型解析(不是real浮点数、string字符串、enum枚举或者数组等类型), 大家不用担心40比特data高位会丢失。...然后使用下面的命令行参数就可以分别传递参数值给data和data_vld。 ? 图2 uvm命令行传递int参数 眼尖朋友们有没有发现,这个命令行参数是不是有些眼熟?...88行声明枚举变量时候,相比int或string类型,多了第一个参数,就是枚举变量具体枚举类型。 命令行参数如图6所示,直接按照枚举进行传递就好了,uvm会自动解析。 ?...2.6 uvm命令行参数什么时候生效? 善于思考朋友们,有没有想到一个问题:既然uvm会自动解析uvm_set_config命令行参数,那么这些参数值是什么时候传递给tb里面的变量?...会不会跟我们初始化冲突? 图11示例代码,我们加上变量初始化和打印语句。 ?

1.9K30

05 Java 类和对象

; // 用于无返回方法退出,无返回末尾可不写; 参数传递 基本数据类型参数传递是以传方式进行,即将实际参数传递给形参; 方法内对形参修改只影响形参单元,不影响实参...如果定义属性成员没有指定初值,则系统自动指定初值.定义属性成员也可以指定初值.public class Point { private int x=10; …… 指定初值另一种办法是通过初始化块来设置对象初值..., 相应成员变量为类变量变量访问形式 本类中直接访问:count 通过类名访问:User.count 不建议通过类一个对象访问,如:x1.count, 实际上还是通过类名方式访问 给类变量赋初值...所以加载顺序: 属性显示初始化 早于 构造代码块初始化 早于 构造函数初始化 与之类似, 静态属性显示初始化 早于 静态构造代码块初始化 代码组织形式-使用包 Java 为了防止类、接口、枚举和注释等命名冲突引用了包...Java,编译后一个或多个包Java class文件可以打包为一个文件,Java打包命令为jar,打包后文件扩展名为.jar,一般称之为jar包。

60710

JAVA面试题全集(上)

一个对象被当作参数传递一个方法后,此方法可改变这个对象属性,并可返回变化后结果,那么这里到底是传递还是引用传递? ? 答:是传递Java语言方法调用只支持参数传递。...当一个对象实例作为一个参数被传递到方法,参数就是对该对象引用。对象属性可以在被调用过程中被改变,但对对象引用改变是不会影响到调用者。...C++和C#可以通过传引用或传输出参数来改变传入参数C#可以编写如下所示代码,但是Java却做不到。 ?...由于Java跨平台性,经过编译Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。...抽象类成员可以是private、默认、protected、public接口中成员全都是public。抽象类可以定义成员变量接口中定义成员变量实际上都是常量。

49210

Swift教程(九)--类和结构体

结构体和枚举类型 类型是一种当它被指定到常量或者变量,或者被传递给函数时会被拷贝类型。 其实,之前章节我们已经大量使用了类型。...Swift 中所有的结构体和枚举都是类型,这意味着你所创建任何结构体和枚举实例——和实例作为属性所包含任意类型——代码传递总是被拷贝。...这种行为规则同样适用于枚举。 类是引用类型 不同于类型,引用类型被赋值到一个常量,变量或者本身被传递一个函数时候它是不会被拷贝。...这是 MyClass x参数改变不是引用 MyClass常量改变。 特征运算符 因为类是引用类型,在后台有可能有很多常量和变量都是引用到了同一个实例。...(相同这词对结构体和枚举来说并不是真的相同,因为它们赋予给常量,变量或者被传递一个函数总是被拷贝过去。)

1.1K30

Java课程主要内容回顾

Java,除了基本数据类型(如int、double等),大部分类型都属于引用类型。这些引用类型允许开发者更灵活地处理数据和对象,并且它们在内存存储是对象引用或地址,不是实际数据。...如果没有显式赋值初始Java会为基本数据类型成员变量赋予默认不是null。...(没考,了解一下) 枚举是一种特殊类,限制对象类型一个有限范围内。枚举常用于定义常量集合,列出一组可能Java枚举使用enum关键字定义。...传递基本数据类型是拷贝实际传递引用类型是拷贝引用地址。 Java基本数据类型传递过程是如何进行拷贝?引用类型传递是什么?...基本数据类型传递传递实际(直接拷贝),引用类型传递是拷贝对象引用(地址)。 方法,为什么成员变量可以使用默认方法变量(局部变量)不能?

9110

Go语言入门——基础语法篇(二)

基础语法 注释 变量 变量声明 初始化变量赋值 常量 枚举 数据类型 字符 字符串 数组 切片 从数组创建切片 直接创建切片 切片操作 字典/映射 分支与循环 if 分支 switch 分支 goto...注释 Go语言有两种注释方式,基本来自于我们熟悉C或Java注释方式 // 单行注释 /* * 多行注释 */ 变量 Go与以往C系列编程语言(Java、C#、C++等)最大一个不同..."",数组则是已经开辟了空间,且每个元素都是零,指针是则0,这里v4变量类型是切片,实际上就是一个指针。...实际上,Go所谓切片,就是一个动态数组,类似与Java、PythonList,可以自动增长。...Java对象做函数参数是引用传递C语言中数组做函数参数也是引用传递,所谓引用传递,可以理解为是传递内存地址。传递则直接是传递内容。

68220

怒肝俩月,新鲜出炉史上最有趣Java小白手册,第一版

C 语言本身只支持传递,它衍生品 C++ 既支持传递,也支持引用传递 Java 只支持传递。...当一个参数按照方式两个方法之间传递,调用者和被调用者其实是用两个不同变量——被调用者变量(原始)是调用者变量一份拷贝,对它们当中任何一个变量修改都不会影响到另外一个变量。...一个参数按照引用传递方式两个方法之间传递,调用者和被调用者其实用是同一个变量,当该变量被修改时,双方都是可见。...基本类型变量存储都是实际引用类型变量存储是对象引用——指向了对象在内存地址。和引用存储 stack(栈),而对象存储 heap(堆)。 ?...它们直接存储,每当作为参数传递,都会将原始(实参)复制一份新出来,给形参用。形参将会在被调用方法结束从栈清除。

85921

JAVA进阶2 深入理解面向对象

2.3.1 final 成员变量  final修饰成员变量必须由程序员显示地指定初始 类 Field:静态初始化或声明该Field指定初始 实例Field:必须在非静态初始化块、声明Field...通过类对象来访问类Field实际上访问不是该类所拥有的Field。C#其实不允许通过对象访问类Field。  3....枚举实例只能是枚举,不能随意通过new创建枚举类对象。  setName里可以对赋值进行验证。  3.7.3 实现接口枚举类  枚举类也可以实现一个或多个接口。...正如前面提到过Java一个对象可以拆为两部分:  指向对象变量名,存在栈对象真正内容,存在堆  当把一个对象作为参数传递是对象引用地址,即栈里变量复制了,但指向堆仍然没有变。...为了便于理解,往往可以认为Java传递复杂参数(非8种基本类型)采用是按引用传,但要注意面试不能这样讲。

47020

Java 语言基础 (类和对象, 方法和封装, static 关键字和继承, 多态和特殊类)

传参 参数分为形参和实参 形参 -- 定义方法参数 实参 -- 调用方法传递参数 调用方法采用传递把实参传递给形参, 方法内部其实在使用形参 当参数是对象, 传递是对象地址 对象为对象地址...-- recursion 从最终态向前递推, 然后不断回溯 方法体内部直接或间接调用当前方法自身形式 注意事项 必须有递归规律以及退出条件 必须使得问题简单化不是复杂化 若递归影响到程序执行性能...判断方法能否构成重载核心: 调用方法能否加以区分 实际意义 调用各种不同版本 实现各种不同功能 调用者只需记住一个方法名就可以 this 关键字 -- 本质上就是当前类类型引用变量 可以通过...提供公有的 get 和 set 方法, 方法中进行合理判断 构造方法调用 set 方法进行合理判断 成员变量和方法什么修饰符都没有叫做默认访问权限 级别介于 private 和 public...valueOf(String str) 枚举对象 int compareTo(E o) 比较两个枚举对象定义顺序 枚举类实现接口方式 枚举类实现接口后需要重写抽象方法, 重写方式有两种:

79630

Swift 类和结构体

构造过程章节会对构造器进行更详细讨论。 结构体和枚举类型 类型被赋予给一个变量、常量或者被传递一个函数时候,其会被拷贝。 之前章节,我们已经大量使用了类型。... Swift ,所有的结构体和枚举类型都是类型。这意味着它们实例,以及实例中所包含任何类型属性,代码传递时候都会被复制。...类是引用类型 与类型不同,引用类型在被赋予到一个变量、常量或者被传递一个函数,其不会被拷贝。因此,引用是已存在实例本身不是其拷贝。...恒等运算符 因为类是引用类型,有可能有多个常量和变量幕后同时引用同一个类实例。(对于结构体和枚举来说,这并不成立。因为它们作为类型,在被赋予到常量、变量或者传递到函数,其总是会被拷贝。)...按照通用准则,当符合一条或多条以下条件,请考虑构建结构体: 该数据结构主要目的是用来封装少量相关简单数据。 有理由预计该数据结构实例在被赋值或传递,封装数据将会被拷贝不是被引用。

1.2K40

java和c对比_c语言数据结构和java数据结构

2.2、结构和联合类型 Java没有结构类型;C声明结构变量编译器会为其分配内存空间,而在Java需要用new来分配空间;C中允许不完整初始化以及声明匿名结构(可嵌套),Java...C void 可代替函数参数表以及表示函数不带参数,在建立 void * 类型,void * 类型变量可以存储一个指向任意类型或函数指针; Java void 仅表示方法没有返回...而在C,常会出现在一个文件定义大量全局变量,在其他文件通过引用声明这些变量来实现共享,但Java不允许有全局变量或函数; 3)当C函数返回类型和声明时类型不相符,函数返回会自动转换为这个类型之后再进行函数返回...;而在Java面对次情况,需要加入强制类型转换; 4)C函数调用参数计算顺序是未定义Java 是从左到右有顺序; 5)C如果变量或函数别的文件定义,必须使用extern 来声明该变量或函数...Java并不直接支持多维数组,但可以创建数组数组,用这种方法可以实现多维数组; 4)值得注意是,C数组实际得到是它指针,而在Java得到是引用,不是指针。

1.9K30

C语言和JAVA区别

2.2、结构和联合类型 Java没有结构类型;C声明结构变量编译器会为其分配内存空间,而在Java需要用new来分配空间;C中允许不完整初始化以及声明匿名结构(可嵌套),Java确实不被允许...C void 可代替函数参数表以及表示函数不带参数,在建立 void * 类型,void * 类型变量可以存储一个指向任意类型或函数指针; Java void 仅表示方法没有返回...而在C,常会出现在一个文件定义大量全局变量,在其他文件通过引用声明这些变量来实现共享,但Java不允许有全局变量或函数; 3)当C函数返回类型和声明时类型不相符,函数返回会自动转换为这个类型之后再进行函数返回...;而在Java面对次情况,需要加入强制类型转换; 4)C函数调用参数计算顺序是未定义Java 是从左到右有顺序; 5)C如果变量或函数别的文件定义,必须使用extern 来声明该变量或函数...Java并不直接支持多维数组,但可以创建数组数组,用这种方法可以实现多维数组; 4)值得注意是,C数组实际得到是它指针,而在Java得到是引用,不是指针。

1.1K40

(23) 枚举本质 计算机程序思维逻辑

枚举更为安全,一个枚举类型变量,它要么为null,要么为枚举之一,不可能为其他,但使用整形变量,它就没有办法强制,可能就是无效。...基本实现原理 枚举类型实际上会被Java编译器转换为一个对应类,这个类继承了Java APIjava.lang.Enum类。...Size有一个私有的构造方法,接受name和ordinal,传递给父类,私有表示不能在外部创建新实例。 三个枚举实际上是三个静态变量,也是final,不能被修改。...一个自然想法是使用枚举自带ordinal,但ordinal并不是一个选择。 为什么呢?...因为ordinal会随着枚举定义位置变化变化,但一般来说,我们希望id枚举关系保持不变,尤其是表示枚举id已经保存在了很多地方时候。

77050

字典创建必须使用dict()函数(vba dictionary 嵌套)

增加 Bean 存枚举, 使用享元模式存储 Bean 示例 使用枚举管理数据字典好处 git repo 背景 开发 Java 项目, 数据字典管理是个令人头痛问题, 至少对我而言是这样, 我所在上一家公司项目里面对于字典表管理是可以进行配置...(String value) , 我们可以将它放在接口里面作为一个通用静态方法, 枚举里面的成员函数我们可以将它们变成 IDictItem 默认方法....第一步优化 : 枚举继承接口 第二步优化 : 增加 Bean 存枚举, 使用享元模式存储 Bean 思路 我仔细考虑了一下, 对于一个有参数枚举来说, 初始化时候类加载器会首先执行枚举项, 也就是调用枚举构造方法..., 将参数 label , 和 value 存至枚举对象 label , 和 value 成员变量, 之后我们通过 get 方法获取成员变量 label , 和 value 来使用枚举....代码 示例 接下来实际演示一下这种方式优势, 例如上面的两张表, 我们就可以写成下面的代码 是不是很简单, 每一张表对应一个枚举管理类, 表字典项, 对应类一个枚举类, 很方便将各个枚举分离出来

2.5K20

java | 深入理解Java枚举类型(二)

枚举型确实也被switch所支持,java 1.7后switch也对字符串进行了支持。...枚举序列化是由jvm保证,每一个枚举类型和定义枚举变量JVM中都是唯一枚举类型序列化和反序列化上,Java做了特殊规定:序列化时Java仅仅是将枚举对象name属性输出到结果,反序列化时候则是通过...enumType(Class对象引用)enumConstantDirectory方法获取到一个Map集合,该集合存放了以枚举name为key和以枚举实例变量为valueKey&Value数据...但是这总不是万能,对于android平台这个可能未必是最好选择,android开发,内存优化是个大块头,而使用枚举占用内存常常是静态变量两倍还多,因此android官方在内存优化方面给出建议是尽量避免...构造函数通过keyUniverse = getKeyUniverse(keyType);初始化了keyUniverse数组,内部存储是所有可能枚举,接着初始化了存在Value值得数组vals

1.2K10

C++ 类不同构造与三种引用

,左主要是变量、常变量(const变量),包括:常量、匿名对象、函数返回引用、const左引用、右引用 引用类型变量核心是其可以修改自己对应内存空间到别的变量(修改this)不是简单拷贝备份...同时,其成员按照权限写到对应权限标签后,不是一个个控制权限。...,const修饰对象变量不能调用其对象方法非const方法。...// false } 实际上取地址运算后,显示两个对象不是同个地址,这是因为cpp里与java不一样,默认 == 比较对象不是比较引用地址,而是调用类重载==运算符方法,如果没有提供,自动转化为可以转化类型进行...cpyY 拷贝构造函数定义如下,类似构造函数,形参是一个同类对象const左引用,没有重写,默认会有一个自动生成拷贝构造函数,对所有对象成员进行浅拷贝。

2.2K10
领券