`
沙舟狼客
  • 浏览: 161658 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

enum还有人记得吗?

阅读更多

enum其实挺好用的,特别是对于一些固定的东西!

package com.pki.test;

import sun.security.pkcs11.wrapper.CK_MECHANISM;

enum KeyAlg {
	// 枚举常量放在第一行
	SM2("SM3withSM2"), RSA("SHA1withRSA");

	public final int keySize;
	public final String signName;
	public final CK_MECHANISM mechanism;
	public final CK_MECHANISM signMechanism;
	public final boolean isSM2;

	// 枚举的构造必须是私有的
	private KeyAlg(String signName) {
		this.signName = signName;
		if (name().equals("SM2")) {
			keySize = 256;
			mechanism = new CK_MECHANISM(0x80008201L);
			signMechanism = new CK_MECHANISM(0x80008101L);
			isSM2 = true;
		} else {
			keySize = 1024;
			mechanism = new CK_MECHANISM(0x80008201L);
			signMechanism = new CK_MECHANISM(0x1L);
			isSM2 = false;
		}
	}

	// 空构造是默认的
	private KeyAlg() {
		keySize = -1;
		signName = null;
		mechanism = null;
		signMechanism = null;
		isSM2 = false;
	}
}

public class EnumTest {
	static KeyAlg keyAlg = KeyAlg.RSA;

	public static void main(String[] args) {
		// 枚举常量的名
		System.out.println(keyAlg.name());
		// 该常量在枚举中的位置
		System.out.println(keyAlg.ordinal());
		// 通过name得到枚举常量
		System.out.println(KeyAlg.valueOf("SM2").name());
	}
}
 
分享到:
评论
1 楼 ggd543 2012-10-04  
enum忘得差不多了,借此机会复习一下

相关推荐

    易语言取外部窗口所有菜单标题.zip

    易语言是一种专为中国人设计的编程语言,它以简明的中文语法,降低了编程的门槛,使得更多非专业程序员能够快速上手。本压缩包“易语言取外部窗口所有菜单标题.zip”显然聚焦于易语言如何获取外部窗口的所有菜单标题...

    五子棋c语言实现框架.rar

    - **棋子状态**:定义一个枚举类型,如`enum ChessColor {BLACK, WHITE, EMPTY}`,用于表示棋子的颜色。 2. **游戏逻辑**: - **落子**:当玩家选择位置时,需要检查该位置是否已放置棋子,以及是否超出棋盘范围...

    C源码——石头剪刀布(适合初学者观摩)

    这些变量可能用枚举类型(enum)来表示石头、剪刀、布三种选择。 2. **用户输入处理**:程序需要获取用户输入,这通常通过`scanf`函数实现。用户输入会被验证以确保其合法性,例如只接受"石头"、"剪刀"或"布"。 3....

    [Online]C++_Conversation_CN.zip

    9. **C++11及后续版本的新特性**:例如右值引用、lambda表达式、auto关键字、强类型enum等,这些新特性让C++变得更加现代和简洁。 10. **设计模式**:C++中的设计模式是解决常见编程问题的最佳实践,如工厂模式、...

    【C#开源】电脑关机代码

    标题中的“【C#开源】电脑关机代码”意味着我们将探讨如何使用C#编程语言来实现计算机的自动关机功能,并且这段代码是开源的,意味着任何人都可以查看、使用、学习甚至修改它。C#是一种面向对象的编程语言,由微软...

    Typescript-Examples.zip

    例如,我们可以创建一个名为`Person`的接口来表示人的属性和行为: ```typescript interface Person { name: string; age: number; sayHello(): void; } ``` 3. 泛型(Generics): 泛型允许我们编写可重用...

    学习C语言中的结构体.docx

    - **动手实践**: 通过编写代码解决实际问题,如创建联系人管理系统、学生信息记录等,加强理解。 #### 八、阅读和分析现有代码 - **开源项目**: 阅读开源项目的代码可以帮助理解结构体在实际开发中的运用方式。 #...

    python自学练习实战的小项目

    枚举(`enum`)是Python 3.4引入的新特性,用于定义一组相关的命名常量。理解类的继承、封装和多态,以及如何使用枚举,有助于构建更复杂的应用。 6. **mmscrapy**: 这可能是使用Scrapy框架进行网页爬虫的项目。...

    Windows 2000 Native API 电子书的源代码 [评价可免费]

    评论时记得要评分。然后会返回给你花费的分再加1分.理论上有十分就可以下载完所有的资源了。一般人我不告诉他。 Example 1.1: A Partial ToolHelp Library Implementation #include “ntdll.h” #include #...

    谭浩强 c++ 习题答案

    2. **数据类型**:C++提供了多种数据类型,如int、char、float、double等基本类型,以及struct、union、enum等复合类型。理解每种类型的作用和用法,以及如何进行类型转换,是编写正确代码的关键。 3. **函数**:...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    下面这个模块是我使用易语言时写补丁最常用的一个模块(当然很多也是抄的),一开始我觉得bug肯定会很多,放出去肯定又会坑很多人,后来我发现坑坑更健康,当你明白一个东西的优缺点之后,你才会更好的选择你所需要...

    uboott移植实验手册及技术文档

    typedef enum { NFCE_LOW, NFCE_HIGH } NFCE_STATE; static inline void NF_Conf(u16 conf) { S3C2410_NAND * const nand = S3C2410_GetBase_NAND(); nand->NFCONF = conf; } Create PDF files without...

Global site tag (gtag.js) - Google Analytics