自定义一个注解根据id匹配对象
时间: 2024-05-08 20:17:05 浏览: 13
首先,定义一个注解类:
```java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MatchId {
int value();
}
```
然后,在需要匹配的对象中使用该注解:
```java
public class User {
@MatchId(1)
private String name;
@MatchId(2)
private int age;
// ...
}
```
最后,可以编写一个工具类,根据id匹配对象:
```java
public class MatchIdUtils {
public static <T> T matchById(List<T> list, int id) {
for (T obj : list) {
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
MatchId matchId = field.getAnnotation(MatchId.class);
if (matchId != null && matchId.value() == id) {
try {
field.setAccessible(true);
return (T) field.get(obj);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
return null;
}
}
```
使用示例:
```java
List<User> users = new ArrayList<>();
users.add(new User("Tom", 20));
users.add(new User("Jerry", 18));
String name = MatchIdUtils.matchById(users, 1);
int age = MatchIdUtils.matchById(users, 2);
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)