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

Java中怎样由枚举常量的ordinal获得枚举常量对象

也就是说,使用name()方法和valueOf(String)方法能够在枚举类型对象和字符串之间方便得转换。...Enum类提供了一个ordinal()方法,用来返回枚举对象的序数,比方本例中SPRING, SUMMER, AUTUMN, WINTER的序数就分别为0, 1, 2, 3。...在有些情况下,我们须要使用这个序数,并且还有可能再依据这个序数生成所须要的枚举对象,但是Enum并没有提供valueOf(int)这个方案,那是不是就做不到呢?...对于这个问题,实际上能够利用枚举类型的values()方法间接的做到。values()方法返回一个枚举对象数组,比方本例就是Season[],数组元素依照序数排列。...在自己定义的枚举类型中,我们仅仅要定义自己的valueOf(int)方法,并返回该数组下标对象对象就能够了。

1.7K10

JSON的基本操作,重点访问对象点号(.)来访问对象和中括号()的区别

访问对象 1、你可以使用点号(.)来访问对象:实例 var myObj, x; myObj = { "name":"runoob", "alexa":10000, "site":null...}; x = myObj.name; 2、你也可以使用中括号([ ])来访问对象:实例 var myObj, x; myObj = { "name":"runoob", "alexa":10000..., "site":null }; x = myObj["name"]; 3、功能上说,这两种方法没有任何区别。...myObj) { document.getElementById("demo").innerHTML += x + ""; } 2、**在 for-in 循环对象的属性时,使用中括号([])来访问属性的...实例 x = myObj.sites.site1; // 或者 x = myObj.sites["site1"]; 修改 1、你可以使用点号(.)来修改 JSON 对象: 实例 myObj.sites.site1

7310
您找到你想要的搜索结果了吗?
是的
没有找到

Java虚拟机对象访问以及如何使用对象的引用(2)

对象访问在 Java 语言中无处不在,是最普通的程序行为,但即使是最简单的访问,也会却涉及 Java 栈、 Java 堆、方法区这三个最重要内存区域之间的关联关系,如下面的这句代码: ?...既然java栈中的是对象的引用,那么我们如何使用对象那,主流的访问方式有两种:使用句柄和直接指针。...(2)直接指针 如果使用直接指针访问方式, Java 堆对象的布局中就必须考虑如何放置访问类型数据的相关信息, reference 中直接存储的就是对象地址,如图: ?...这两种对象访问方式各有优势,使用句柄访问方式的最大好处就是 reference 中存储的是稳定的句柄地址,在对象被移动(垃圾收集时移动对象是非常普遍的行为)时只会改变句柄中的实例数据指针,而 reference...使用直接指针访问方式的最大好处就是速度更快,它节省了一次指针定位的时间开销,由于对象访问在 Java 中非常频繁,因此这类开销积少成多后也是一项非常可观的执行成本。

2.8K10

Scala里面如何使用枚举

枚举通常用来定义已知数量的常量,比如月份,星期,季节等等,用过java的人都知道定义枚举的关键字是enum,在scala里面和java有所不同,来看一个完整的例子定义: 上面的这个例子基本涵盖了枚举的所有常用方法...,定义枚举我们继承的是Enumeration抽象类,然后通过内部对象Value来赋值每一个枚举,此外里面还定义了几个工具方法,比如判断是否存在某个枚举,是否是工作日,以及打印所有的枚举,在使用的时候可以直接通过...Object来访问 。...此外还可以用枚举做模式匹配: 上面基本就是Scala里面最常见的枚举方法了,当然这种常见的枚举有一些缺点,比如上面的这个模式匹配,如果我仅仅写3个枚举,它编译时候仍然能通过,但在运行的时候就会报错,...最后这种方式不能枚举一个对象,只能简单的类型,如果想枚举,本身就是一个Bean,那么则需要另外的方式,这里就不展开了,有兴趣的朋友可以参考下面的链接: http://pedrorijo.com/blog

1.1K50

Scala专题系列(五):类与对象

Scala 是一个函数式编程语言,也是一个面向对象的编程语言,与 Java、 Python、 Ruby、Smalltalk 等其他语言一样,Scala 在架构层面上提倡的方法是:小处用函数式编程,大处用面向对象编程...1.scala中,主构造器的参数直接放在类名后面 class person(val name:String,val age:Int){ ….. } 主构造器的参数被编译成自段,其被初始化成构造时传入的参数...var newNum() = { lastNum += 1 ; lastNum } } 类可以和它的伴生对象相互访问私有特性,且必须是在同一个源文件中 再次回顾apply方法 通常,一个apply方法返回的是伴生类的对象...在Scalal中没有枚举类型,不过标准库中提供了一个Enumeration的一个助手类,可以用于产出枚举 比如: 定义一个扩展Enumeration类的对象并以Value方法调用初始化枚举中的所有可选...val Yellow = Value(10) // 名称为 "Yellow" ID为10 val green = Value("gg") // ID 为11 名称为gg 如果不指定,则ID在将前一个枚举基础上加

53730

Scala 学习笔记之Object

单例对象 Scala没有静态方法或静态字段,可以使用 object 来达到这个目的,对象定义了某个类的单个实例: object Account{ private var lastNumber =...在Scala中可以用对象来实现: 作为存放工具函数或常量的地方 高效的共享单个不可变实例 需要用单个实例来协调某个服务时(参考单例模式) 2....Account{ private var lastNumber = 0 def newUniqueNumber () = {lastNumber += 1; lastNumber} } 类和它的伴生对象可以相互访问私有特性...枚举 不同于Java,Scala中没有枚举类型,需要我们通过标准库类 Enumeration 来实现: object BusinessType extends Enumeration{ var FLIGHT..., HOTEL, TRAIN, COACH = Value } 继承 Enumeration 类,实现一个 BusinessType 对象,并以 Value 方法调用初始化枚举中的所有可选.在这里我们定义了

47220

大数据技术之_16_Scala学习_06_面向对象编程-高级+隐式转换和隐式

嵌套类的使用1   请编写程序,定义 Scala 的成员内部类和静态内部类,并创建相应的对象实例。...方式1   内部类如果想要访问外部类的属性,可以通过外部类对象访问。...// 2、Scala 中内部类从属于外部类的对象,所以外部类的对象不一样,创建出来的内部类也不一样,无法互换使用。...示例代码如下: package com.atguigu.chapter08.homework.objecthomework /**   * 4、编写一个扑克牌 4 种花色的枚举,让其 toString...小结: (1)在隐式匹配时,不能有二义性。 (2)当同时有隐式和隐式参数的默认的时候,隐式的优先级高。 (3)当隐式参数默认匹配不到隐式时,如果有隐式参数默认的话,会使用默认

1.3K20

3小时Java入门

基本数据类型相对非常底层,基本类型相同对象占有同样的存储单元,判断是否相等可以用 ==。...引用数据类型本质上都是Class,相对抽象,引用类型相同对象占用不同的存储单元,判断是否相等应该用 equals方法。...Iterator是一种抽象的数据访问模型。使用Iterator模式进行迭代的好处有: 对任何容器都采用同一种访问模型; 调用者对容器内部结构一无所知; 容器类返回的Iterator对象知道如何迭代。...Java编程风格统一为面向对象Scala支持面向对象和函数式编程多种风格 Java中的多分支用switch, Scala使用match模式匹配实现多分支。...3,常用标点符号差异 Java中导入全部对象用星号作为通配符,Scala中用下划线作为通配符。 Java中用方括号来取索引,Scala中用圆括号来取索引。

2.7K30

Spark基础-scala学习(二、面向对象

.scala文件之中 伴生类和伴生对象,最大的特点就在于,互相可以访问private field scala> :paste // Entering paste mode (ctrl-D to finish...scala没有直接提供类似于java中的Enum这样的枚举特性,如果要实现枚举,则需要用object继承Enumeration类,并且调用Value方法来初始化枚举 object Season extends...还可以通过Value传入枚举的id和name,通过id和toString可以获取,还可以通过id和name来查找枚举 scala> :paste // Entering paste mode (ctrl-D...field和method 还可以使用protected[this],则只能在当前子类对象访问父类的field和method,无法通过其他子类对象访问父类的field和mehtod scala> :paste...scala> s.sayHello Hello, jike 抽象field 如果在父类中,定义了field,但是没有给出初始,则此field为抽象field 抽象filed意味着,scala会根据自己的规则

64230

Scala学习教程笔记二之函数式编程、Object对象、伴生对象、继承、Trait、

private field;这种情况下,如果不希望field被其他对象访问到,那么可以使用private[this],意味着对象私有的field,只有本对象内可以访问到。...field,只有本对象内可以访问到。....scala文件之中;伴生类与伴生对象,最大的特点就是在于,互相可以访问private field; 4:Scala之继承学习笔记: 1:让object继承抽象类: 1.1:object的功能其实和...: 4.1:scala没有直接提供类似于java中的Enum这样的枚举特性,如果要实现枚举,则需要用Object继承Enumeration类,并且调用value方法来初始化枚举:...[this],则只能在当前子类对象访问父类的field和method,无法通过其他子类对象访问父类的field和method;         class Person {           protected

1.1K60

Scala 枚举的使用和探索(译)

Scala 枚举示例和特性 枚举(Enumerations)是一种语言特性,对于建模有限的实体集来说特别有用。一个经典的例子是将工作日建模为一个枚举:每个七天都有一个。...为了避免这种问题,我们可以其他办法实现枚举: 使用密封盒对象(sealed case objects) 分项(itemized) enumeratum Sealed case objects 如果您决定使用...", false) sealed case objects的问题 但是这种方式也有它自己的问题: 没有检索所有枚举的简单方法 没有默认的序列化/反序列化方法 枚举之间没有默认的排序——这可以通过包含一些关于的信息来手动实现...它非常类似于我们给简单的密封盒对象添加额外的 sealed abstract class Weekday( val name: String,...反序列化的默认方法 列出所有可能的枚举上添加额外的字段 排序 编译自:Scala Enumerations

2.1K40

Scala学习笔记(七)

Enumeration Scala 中并没有枚举类型,但是在标准库中有scala.Enumeration。可以扩展Enumeration类,调用Value方法来初始化枚举中的可能。...Source.values) println(s.id + ":" + s) } 打印的结果: source type is Net () 0:Net 1:Memory 2:Disk 在定义枚举的时候也可以自定义...id和名称,Source2重新定义了几个枚举。...中的枚举使用轻量级Enumeration进行实现 Scala中的枚举其实是一个伴随对象 Scala中的枚举没有方法重写功能 Scala中的枚举其实都是Enumeration.Value这个对象 总结 本篇笔记仍然是为了...先前的文章: Scala学习笔记(六) Scala的偏函数和偏应用函数 Scala学习笔记(五) 抽象类以及类中的一些语法糖 Scala学习笔记(四) 类的初步 Scala学习笔记(三)

79930

Scala学习三-面向对象

Scala中, **用case修饰的单例对象就叫: 样例对象, 而且它没有主构造器 **, 它主要用在两个地方: 当枚举使用 作为没有任何参数的消息传递 case object 样例对象名 object...OopDemo{ //定义特质sex trait Sex //定义枚举male、female case object Male extends Sex case object Female...m = Monkey("程序猿",Male) println(m) } } 数组 数组就是用来存储多个同类型元素的容器, 每个元素都有编号(也叫: 下标, 脚标, 索引), 且编号都是0...min() 方法: 求最小 sorted() 方法: 排序, 返回一个新的数组. reverse() 方法: 反转, 返回一个新的数组...._编号 的形式来访问元组中的元素,_1表示访问第一个元素,依次类推. 也可以通过 元组名 .productIterator 的方式, 来获取该元组的迭代器, 从而实现遍历元组.

66521

Scala 基础 (六):面向对象(下篇)

、特质 四、扩展内容 ---- 在之前的文章中总结了Scala面向对象模块基础的内容,接下来学习面向对象的高阶内容。...// 定义抽象类 abstract class 类名{ // 定义抽象属性 不赋初始 val|var 变量名: 类型 // 定义抽象方法 只声明,不实现 def 方法名(): 返回类型 }...(伴生对象Scala是一门完全面向对象的语言,没有静态操作。...单例对象对应的类称之为伴生类,伴生对象的名称应该和伴生类名一致,必须在同一个文件中。 单例对象中的属性和方法都可以通过伴生对象名(类名)直接调用访问。...结果是class package.xxx.className 获取对象的类:obj.getClass 枚举类 需要继承 Enumeration。 用Value类型定义枚举

46610

使用 Moq 测试.NET Core 应用 -- Mock 属性

我们可以为mock对象设定默认: ? 把DefaultValue的设为DefaultValue.Mock....但是DefaultValue这个属性只对引用类型起作用(对类型不起作用), 像这种递归的mock, 它会递归的创建所需的引用类型, 但是最后的IsAvailable这个类型是不起作用的....因为最后一层是bool类型的, 是类型, 所以上面的设置不起作用, 返回的是false. 所以测试没通过. 那我就把它改成string类型好了: ? 审批方法: ? 然后再调试测试: ?...注意, 这个默认只对宽松(Loose) mock, 起作用.针对Strict mock, 仍然需要设定最后一层属性的. 属性变化跟踪 需要添加一些代码, 首先添加一个枚举: ?...然后在审批类里, 我设置了这个属性的: ? 上面的代码也就是说, 我的mock对象的某个属性在测试的时候它的会发生变化. 而Moq可以记住这些mock属性的变化的..... 新写一个测试: ?

2.6K40

scala(五) 函数式编程

面向对象编程 解决问题,分解对象,行为,属性,然后通过对象的关系以及行为的调用来解决问题。...对象:用户; 行为:登录、连接jdbc、读取数据库 属性:用户名、密码 Scala语言是一个完全面向对象编程语言。...万物皆函数 在Scala中函数式编程和面向对象编程融合在一起了。...中函数可以不用加 return 用来标识返回,在scala中会以最后一个参数或表达式的结果作为返回。...函数中无法指定返回,至少我试了好几次没成功 如果函数明确声明 unit,那么即使函数体中使用 return 关键字也不起作用 上面的都不行,这个也自然没用了 scala 如果期望时无返回类型,可以省略等号

35420

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券