使用注释。
如果您标记了需要比较的字段(无论它们是否是私有的,您仍然不会丢失封装,然后获取这些字段并进行比较。可能如下:
在需要比较的类中:
@ComparableField private String field1;@ComparableFieldprivate String field2;private String field_nocomparable;
并在外部类中:
public <T> void compare(T t, T t2) throws IllegalArgumentException, IllegalAccessException { Field[] fields = t.getClass().getDeclaredFields(); if (fields != null) { for (Field field : fields) { if (field.isAnnotationPresent(ComparableField.class)) { field.setAccessible(true); if ( (field.get(t)).equals(field.get(t2)) ) System.out.println("equals"); field.setAccessible(false); } } }}该代码未经测试,但请告诉我是否有帮助。



