我已经多次遇到这个问题。
问题是:我有一些带有私有字段的类(例如,用户信息是一个Dto):
public class RegisterRequest {
private String firstName;
private String lastName;
private String username;
private String email;
private String fieldOfStudy;
private String password;
}
在搜索了如何读取这些字段的值的社区后(例如,当进行发布请求时),我看到了很多回答,说解决方案是反射。
假设我想检查任何字段是否为空(在另一个类中),那么我的reflection-method将如下所示:
for (Field f : registerRequest.getClass().getDeclaredFields()) {
try {
Field field = registerRequest.getClass().getDeclaredField(f.getName());
field.setAccessible(true);
Object value = field.get(registerRequest);
if (value == null) {
throw new AccountException("Vul alle velden in.");
}
}
catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
现在我想知道是否有一种不使用**field. setAccesible(true)**的方法来实现这一点,因为绕过字段的可访问性可能会导致运行时错误。也就是说,我们不应该使用反射来改变字段的可见性。
感谢您抽出宝贵时间!
1条答案
按热度按时间bkhjykvo1#
在包含私有数据的类中执行有效性检查:
通过执行以下操作在其他类中使用此函数:
Geocodezip的制作者