接口:
public interface IPersistentEnum<T> {
T getKey();
String getValue();
}
工具类:
public final class PersistentEnum {
/**
*
* @param <T>
* @param <V>
* @param clazz
* @param value
* @return
*/
public static <T extends Enum<T> & IPersistentEnum<V>, V> T parse(Class<T> clazz, V key) {
for (T t : clazz.getEnumConstants()) {
if (isEquals(t.getKey(), key)) {
return t;
}
}
return null;
}
private static <T> boolean isEquals(T lhs, T rhs) {
if (lhs == null && rhs == null) {
return true;
} else if (lhs == null || rhs == null) {
return false;
} else {
return lhs.equals(rhs);
}
}
}
Enum example:
public enum ESex implements IPersistentEnum<Integer> {
MEN(1,"男"),WOMAN(0,"女");
private int key;
private String value = null;
private ESex(Integer key, String value) {
this.key = key;
this.value = value;
}
@Override
public String getValue() {
return value;
}
@Override
public Integer getKey() {
return key;
}
public static ESex parse(int key) {
return PersistentEnum.parse(ESex.class, key);
}
}
Test:
public class ESexTest {
/**
* @param args
*/
public static void main(String[] args) {
String sex1 = PersistentEnum.parse(ESex.class, 1).getValue();
System.out.println(sex1);
//如果枚举里写了parse静态方法可以直接使用
String sex2 = ESex.parse(1).getValue();
System.out.println(sex2);
}
}
输出结果:
男
男
分享到:
相关推荐
2. **自定义方法与变量**:`Enum`不仅限于简单的枚举值,还可以像普通类那样定义方法和变量。例如,在`Color`枚举类型中添加一个方法来随机返回一个颜色,甚至可以定义静态变量来存储枚举值的数量,如: ```java ...
`SwiftNotes`项目提供了一个针对`NotificationCenter`的超级简单封装,旨在简化使用过程,提高代码的可读性和可维护性。 首先,`NotificationCenter`的基本用法是在一个对象中注册监听器(observer),然后在其他...
`laravel-enum` 包引入了枚举类型的概念,它允许我们将这些固定的值封装在类中,提供了更安全、可读性更强的解决方案。 **二、安装与配置** 首先,你需要通过 Composer 来安装 `enum` 包。在终端中运行以下命令: ...
2. **封装性**:将枚举独立出来,可以更好地遵循封装原则。它降低了类之间的耦合度,使得修改枚举的定义不会影响到类的其他部分,更便于维护。 3. **重用性**:如果枚举在类外定义,可以在多个类或多个项目中重用,...
"swift-仿照友盟目录结构对微信QQ微博分享的SDK进行封装"项目正是为了解决这个问题,提供了一个灵活、可扩展的解决方案。 首先,我们来详细了解一下友盟(Umeng)的目录结构。友盟是中国的一家知名移动互联网统计...
总之,Java的枚举类型`Enum`不仅提供了对常量集的封装,还具备了类的所有功能,包括方法、构造函数和继承。它极大地增强了代码的可读性和安全性,是Java开发中的一个重要特性。通过深入理解和熟练应用,可以提高代码...
enum class LogLevel { DEBUG, INFO, WARN, ERROR }; ``` 3. **构造函数**:接受日志级别和日志文件路径作为参数,用于初始化类的实例。 4. **日志写入函数**:这是核心功能,应该有多个重载版本,支持ASCII和...
10. **Swift特性**:考虑到是Swift语言实现,项目可能利用了Swift的一些特性,如枚举(enum)来表示Cell类型,可选链(Optional Chaining)来简化代码,或者泛型(Generics)来提高代码的复用性。 通过这样的封装,...
我们可以创建一个网络管理类 NetworkManager,将 Reachability 的功能包装在其中,提供简单易懂的方法,如检查当前网络状态: ```swift enum NetworkStatus { case notReachable case reachableViaWiFi case ...
本教程将详细讲解如何简单封装一个跑马灯Label,并方便地在项目中进行调用。 首先,我们需要创建一个新的Swift文件,比如命名为`ScrollLabel.swift`,来作为自定义跑马灯Label的类。这个类将继承自`UILabel`,以便...
下面是一个简单的protobuf枚举定义示例: ```protobuf enum Color { RED = 0; GREEN = 1; BLUE = 2; } ``` 在这个例子中,`Color`是一个枚举类型,包含了三个值:`RED`、`GREEN`和`BLUE`,分别对应整数值0、1和2...
以下是一个简单的枚举例子: ```java public enum Color { RED, GREEN, BLUE } ``` 这个例子中,`Color`是一个枚举类型,包含三个常量:`RED`、`GREEN`和`BLUE`。枚举类型是不能被继承的,因为它们被声明为`final...
本文主要介绍了 Java 封装统一的 Result Model 案例,具有很好的参考价值,希望对大家有所帮助。在开发过程中,有时候会需要使用错误码+错误信息的形式,来返回某些业务操作的错误结果信息,来代替效率较低的异常...
然而,原生的NSUserDefaults API在使用时可能存在类型不安全的问题,因为它依赖于键值对的方式来存储和检索数据,这可能导致在处理不同类型的数据时出现潜在错误。为了解决这个问题,开发者们通常会封装一个更加类型...
总的来说,`enumjs`使得在JavaScript中处理枚举变得简单且易于理解,提升了代码的可读性和一致性。虽然`gen_enum`曾经是创建枚举的一个选项,但鉴于其已被废弃,建议使用`enumjs`等更新的库来满足枚举的需求。
与宏相比,`inline`函数保持了函数的封装性和类型安全性,且支持编译器进行优化。例如: ```cpp template inline T Max(const T& a, const T& b) { return a > b ? a : b; } ``` 4. `const`和`static`成员: ...
枚举(Enum)在Swift中是一个强大的类型,它可以表示一组相关的值。在这里,可能用于表示不同的登录状态(例如,未登录、正在登录、登录成功、登录失败等),或者第三方登录的不同提供商(如Facebook、Google等)。...
一个简单方便的轮播图组件,基于viewpager 基础上进行的封装。 可设置 项目中图片,网络图片, View; 支持循环自动播放,手势滑动切换,item点击事件,可设置 点点的样式宽高、颜色、大小、位置 ; 可设置蒙层;可...
在C#中,结构体是一种值类型,用于封装多个相关变量。IP地址通常由四个0-255的字节组成,可以定义一个结构体来存储这些字节,并提供相应的访问和操作方法。同时,这个练习也可能涉及网络编程的基本概念,如IPv4地址...