java - 使用反射使用Calendar类的常量来添加月份

标签 java reflection static calendar constants

假设我们有一个包含值的字符串数组(“MONTH=12”,“DAY_OF_MONTH=10”) 因此,根据输入条件,我需要添加月/日/小时到 myDate

例如 1. 如果需要添加 12 个月至今,我需要执行以下操作 日历 cal = Calendar.getInstance(); cal.add(日历.MONTH,12);

例如2.如果我需要添加10天 日历 cal = Calendar.getInstance(); cal.add(日历.DAY_OF_MONTH,12);

我可以对每种情况使用 If 条件执行上述操作,如果 String = MONTH 使用 Calender.MONTH,如果是 DAY_OF_MONTH,则使用 Calendar.DAY_OF_MONTH

所以我想通过反射来实现这一点,这样我就不需要添加 if 条件

最佳答案

您可以调用getField(String)Calendar 类上,然后调用 Field.get(Object)使用 null 获取类字段。比如,

String toGet = "DAY_OF_MONTH";
try {
    Field f = Calendar.class.getField(toGet);
    Integer v = (Integer) f.get(null);
    System.out.printf("%d == %d%n", v, Calendar.DAY_OF_MONTH);
} catch (Exception e) {
    e.printStackTrace();
}

哪些输出

5 == 5

关于java - 使用反射使用Calendar类的常量来添加月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152038/

相关文章:

java - 将图像上传到firebase中的不同文件夹

java - Retrofit 2 类文件问题

java - 打印二维数组中的特定行

c# - 使用反射和表达式的自动列映射

java - 实例化静态嵌套类而不限定封闭类

java - 如何将 postgresql ARRAY_AGG 数据转换为 Java Set

java - 在Java中使用反射来设置方法的参数

Java java.lang.IllegalArgumentException : wrong number of arguments

c - 非静态可以跟随静态,但静态不能跟随非静态?

c++ - C++ 中共享库中对象的静态常量。进程间共享吗?