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());
}
}
分享到:
相关推荐
易语言是一种专为中国人设计的编程语言,它以简明的中文语法,降低了编程的门槛,使得更多非专业程序员能够快速上手。本压缩包“易语言取外部窗口所有菜单标题.zip”显然聚焦于易语言如何获取外部窗口的所有菜单标题...
- **棋子状态**:定义一个枚举类型,如`enum ChessColor {BLACK, WHITE, EMPTY}`,用于表示棋子的颜色。 2. **游戏逻辑**: - **落子**:当玩家选择位置时,需要检查该位置是否已放置棋子,以及是否超出棋盘范围...
这些变量可能用枚举类型(enum)来表示石头、剪刀、布三种选择。 2. **用户输入处理**:程序需要获取用户输入,这通常通过`scanf`函数实现。用户输入会被验证以确保其合法性,例如只接受"石头"、"剪刀"或"布"。 3....
9. **C++11及后续版本的新特性**:例如右值引用、lambda表达式、auto关键字、强类型enum等,这些新特性让C++变得更加现代和简洁。 10. **设计模式**:C++中的设计模式是解决常见编程问题的最佳实践,如工厂模式、...
标题中的“【C#开源】电脑关机代码”意味着我们将探讨如何使用C#编程语言来实现计算机的自动关机功能,并且这段代码是开源的,意味着任何人都可以查看、使用、学习甚至修改它。C#是一种面向对象的编程语言,由微软...
例如,我们可以创建一个名为`Person`的接口来表示人的属性和行为: ```typescript interface Person { name: string; age: number; sayHello(): void; } ``` 3. 泛型(Generics): 泛型允许我们编写可重用...
- **动手实践**: 通过编写代码解决实际问题,如创建联系人管理系统、学生信息记录等,加强理解。 #### 八、阅读和分析现有代码 - **开源项目**: 阅读开源项目的代码可以帮助理解结构体在实际开发中的运用方式。 #...
枚举(`enum`)是Python 3.4引入的新特性,用于定义一组相关的命名常量。理解类的继承、封装和多态,以及如何使用枚举,有助于构建更复杂的应用。 6. **mmscrapy**: 这可能是使用Scrapy框架进行网页爬虫的项目。...
评论时记得要评分。然后会返回给你花费的分再加1分.理论上有十分就可以下载完所有的资源了。一般人我不告诉他。 Example 1.1: A Partial ToolHelp Library Implementation #include “ntdll.h” #include #...
2. **数据类型**:C++提供了多种数据类型,如int、char、float、double等基本类型,以及struct、union、enum等复合类型。理解每种类型的作用和用法,以及如何进行类型转换,是编写正确代码的关键。 3. **函数**:...
下面这个模块是我使用易语言时写补丁最常用的一个模块(当然很多也是抄的),一开始我觉得bug肯定会很多,放出去肯定又会坑很多人,后来我发现坑坑更健康,当你明白一个东西的优缺点之后,你才会更好的选择你所需要...
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...