注解+反射

声明注解

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Conversion {

    String saveColumn();
    String saveProperties();
    String byTable();
    String showColumn();
    String showProperties();
    boolean saveFlag() default false;
}

 声明对象

public class A07TbEquipmentMaintenance  implements Serializable {
、

    /**
     * 设备Id(外键,关联设备资产管理台账)
     */
    @Conversion(saveColumn = "tea_id", saveProperties = "tbEquipmentAssetsId",byTable="tb_equipment_assets", showColumn = "equipment_code", showProperties ="equipmentCode" )
    @ApiModelProperty(value = "设备Id(外键,关联设备资产管理台账)")
    private String tbEquipmentAssetsId;

  
    private String equipmentCode;

    private String teiId;

    private Integer peopleNum;

  
    private static final long serialVersionUID = 1L;

      @Override
    public String toString() {
        return "A07TbEquipmentMaintenance{}";
    }

    public String toString(String str) {
        return str;
    }
}

 使用反射,获取对象中的属性和方法

 public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException {
        Class clazz = Class.forName("com.enercomn.web.A07EquipmentMaintenance.bean.A07TbEquipmentMaintenance");
        //实例化对象
        Object instance = clazz.newInstance();
        //所有的属性 private格式的也在内
        Field[] declaredFields = clazz.getDeclaredFields();
        for (int i = 0; i < declaredFields.length; i++) {
            Field field = declaredFields[i];
            if(field.isAnnotationPresent(Conversion.class)){
                Conversion conversion = field.getDeclaredAnnotation(Conversion.class);
                //获取对象注解中的内容
                String saveColumn = conversion.saveColumn();
                System.out.println(saveColumn);

            }
            //私密的属性打开访问权。
            field.setAccessible(true);
            //设置对象属性信息
            if(String.valueOf(field.getType()).indexOf("String") != -1){
                field.set(instance,"string"+i);
                String value = String.valueOf(field.get(instance)) ;
                System.out.println(value);
            }
        }
        Method[] methods = clazz.getMethods();
        for (int j = 0; j < methods.length; j++) {
            Method method = methods[j];
            System.out.println(method.getName());
        }
        String[] string ={"333333"};
        Method toString1 = clazz.getMethod("toString", String.class);
        System.out.println( toString1.invoke(instance,string));;
        Method toString2 = clazz.getMethod("toString");
        System.out.println(  toString2.invoke(instance));;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个 Java 示例代码,使用注解+反射+枚举实现字典方法: ```java import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; @Retention(RetentionPolicy.RUNTIME) @interface DictionaryEntry { String key(); String value(); } enum Dictionary { FRUIT, COLOR, ANIMAL; } public class Main { private static Map<String, Map<String, String>> dictionaryMap = new HashMap<>(); public static void main(String[] args) { initDictionary(); String fruitName = "apple"; String fruitColor = getDictionaryValue(Dictionary.FRUIT, fruitName); System.out.println(fruitName + " is " + fruitColor); String colorName = "red"; String colorHex = getDictionaryValue(Dictionary.COLOR, colorName); System.out.println(colorName + " is " + colorHex); String animalName = "dog"; String animalSound = getDictionaryValue(Dictionary.ANIMAL, animalName); System.out.println(animalName + " says " + animalSound); } private static void initDictionary() { // Fruit dictionary Map<String, String> fruitMap = new HashMap<>(); fruitMap.put("apple", "red"); fruitMap.put("banana", "yellow"); fruitMap.put("orange", "orange"); dictionaryMap.put(Dictionary.FRUIT.name(), fruitMap); // Color dictionary Map<String, String> colorMap = new HashMap<>(); colorMap.put("red", "#FF0000"); colorMap.put("green", "#00FF00"); colorMap.put("blue", "#0000FF"); dictionaryMap.put(Dictionary.COLOR.name(), colorMap); // Animal dictionary Map<String, String> animalMap = new HashMap<>(); animalMap.put("dog", "woof"); animalMap.put("cat", "meow"); animalMap.put("bird", "tweet"); dictionaryMap.put(Dictionary.ANIMAL.name(), animalMap); } private static String getDictionaryValue(Dictionary dict, String key) { Map<String, String> dictMap = dictionaryMap.get(dict.name()); for (Map.Entry<String, String> entry : dictMap.entrySet()) { if (entry.getKey().equals(key)) { return entry.getValue(); } } return null; } static { for (Dictionary dict : Dictionary.values()) { Map<String, String> dictMap = new HashMap<>(); Class<?> dictClass; try { dictClass = Class.forName(dict.name()); } catch (ClassNotFoundException ex) { continue; } for (Field field : dictClass.getDeclaredFields()) { if (field.isAnnotationPresent(DictionaryEntry.class)) { DictionaryEntry entry = field.getAnnotation(DictionaryEntry.class); dictMap.put(entry.key(), entry.value()); } } dictionaryMap.put(dict.name(), dictMap); } } static class Fruit { @DictionaryEntry(key = "apple", value = "red") public static String APPLE; @DictionaryEntry(key = "banana", value = "yellow") public static String BANANA; @DictionaryEntry(key = "orange", value = "orange") public static String ORANGE; } static class Color { @DictionaryEntry(key = "red", value = "#FF0000") public static String RED; @DictionaryEntry(key = "green", value = "#00FF00") public static String GREEN; @DictionaryEntry(key = "blue", value = "#0000FF") public static String BLUE; } static class Animal { @DictionaryEntry(key = "dog", value = "woof") public static String DOG; @DictionaryEntry(key = "cat", value = "meow") public static String CAT; @DictionaryEntry(key = "bird", value = "tweet") public static String BIRD; } } ``` 这个例子中,我们创建了一个枚举类型 `Dictionary`,表示三个不同的字典:`FRUIT`、`COLOR`、`ANIMAL`。我们使用注解 `@DictionaryEntry` 来标记每个字典的条目,然后使用反射初始化字典。 在 `initDictionary` 方法中,我们创建了一个 `dictionaryMap`,包含了每个字典的名称和条目。我们使用反射枚举每个字典的条目,并将它们添加到 `dictionaryMap` 中。 在 `getDictionaryValue` 方法中,我们通过枚举类型 `Dictionary` 和键值 `key` 获取字典中的值。我们首先从 `dictionaryMap` 中获取对应的字典,然后遍历字典中的条目,查找与给定键值匹配的条目并返回它的值。 注意,这个例子只是一个简单的演示,实际应用中可能需要更复杂的字典结构和查询方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值