常用的字符枚举类,用java实现。比如百分号、@、英文逗号
时间: 2024-03-27 18:39:53 浏览: 21
Java 中没有提供表示百分号、@、英文逗号等常用字符的枚举类,但我们可以自定义枚举类来表示这些字符,例如:
```java
public enum SpecialChar {
PERCENT("%"),
AT("@"),
COMMA(",");
private final String symbol;
SpecialChar(String symbol) {
this.symbol = symbol;
}
public String getSymbol() {
return symbol;
}
}
```
在这个枚举类中,我们定义了 PERCENT、AT 和 COMMA 三个枚举常量,分别表示百分号、@、英文逗号。每个枚举常量都有一个字符串类型的 symbol 属性,表示对应的字符。
使用时,可以通过枚举常量的 getSymbol() 方法获取对应的字符,例如:
```java
SpecialChar comma = SpecialChar.COMMA;
String symbol = comma.getSymbol(); // 获取英文逗号的字符 ","
```
这样,就可以方便地表示特定的字符类型。
相关问题
常用的字符枚举类,用java实现
Java 中常用的字符枚举类包括:
1. DayOfWeek(星期几):
```java
public enum DayOfWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
```
2. Month(月份):
```java
public enum Month {
JANUARY,
FEBRUARY,
MARCH,
APRIL,
MAY,
JUNE,
JULY,
AUGUST,
SEPTEMBER,
OCTOBER,
NOVEMBER,
DECEMBER
}
```
3. TimeUnit(时间单位):
```java
public enum TimeUnit {
NANOSECONDS,
MICROSECONDS,
MILLISECONDS,
SECONDS,
MINUTES,
HOURS,
DAYS
}
```
4. SizeUnit(大小单位):
```java
public enum SizeUnit {
BYTES,
KILOBYTES,
MEGABYTES,
GIGABYTES,
TERABYTES,
PETABYTES,
EXABYTES
}
```
这些枚举类可以帮助我们更加方便地表示特定的字符类型,使代码更加简洁易懂。
用java实现反射生成枚举类
可以使用Java的反射机制来动态生成枚举类。下面是一个示例代码:
```java
import java.lang.reflect.Constructor;
public class EnumReflectionExample {
public static void main(String[] args) throws Exception {
// 枚举类名
String enumClassName = "com.example.EnumExample";
// 枚举常量名称
String constantName = "VALUE3";
// 新的枚举常量值
Object[] newEnumConstants = { "New Value 3" };
// 获取原始枚举类对象
Class<?> enumClass = Class.forName(enumClassName);
Object[] enumConstants = enumClass.getEnumConstants();
// 创建新的枚举类数组,长度比原始数组多1
Object[] newEnumValues = new Object[enumConstants.length + 1];
System.arraycopy(enumConstants, 0, newEnumValues, 0, enumConstants.length);
// 创建新的枚举常量对象
Class<?>[] paramTypes = { String.class, int.class };
Constructor<?> constructor = enumClass.getDeclaredConstructor(paramTypes);
constructor.setAccessible(true);
Object newEnumConstant = constructor.newInstance(constantName, newEnumConstants.length);
newEnumValues[newEnumConstants.length] = newEnumConstant;
// 更新枚举常量值
Field valuesField = enumClass.getDeclaredField("$VALUES");
valuesField.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(valuesField, valuesField.getModifiers() & ~Modifier.FINAL);
valuesField.set(null, newEnumValues);
// 输出更新后的枚举常量值
for (Object constant : enumClass.getEnumConstants()) {
System.out.println(constant);
}
}
}
```
这个示例中,我们首先通过Class.forName()方法获取到原始的枚举类对象。然后,我们创建一个新的枚举常量数组,将原始的枚举常量值复制到新数组中。接下来,我们使用反射来创建一个新的枚举常量对象,并将其添加到新的枚举常量数组中。最后,我们使用反射来更新枚举类的私有静态字段"$VALUES"的值,将其替换为新的枚举常量数组。
请注意,这种动态生成枚举类的方法并不是Java语言本身提供的,而是使用了反射机制来实现的。因此,在使用时需要谨慎考虑其适用性和可能带来的潜在问题。