我想识别一个类的PII字段,这些字段用一个定制的注解进行了注解,然后只对这些字段执行加密/解密操作,并返回Class对象。
说明:
1.考虑类Employee。它有3个字段。
{
String name;
String email;
long phnNumber;
}
1.现在,我将编写一些自定义注解(如@PIIData)来标识哪些字段需要加密/解密,然后使用此注解对字段进行注解。
{
@PIIData
String name;
@PIIData
String email;
long phnNumber;
}
1.我现在用一些值初始化Employee类的对象,然后将该对象传递给加密/解密实用程序。
伪代码:
Employee emp = new Employee('Alice','alice@al.com',999);
utility.apply(emp);
我的问题:
1.当我们将任何对象传递给**utility.apply()**时,如果该对象的字段用@PIIData注解,那么如何确保该实用程序拦截该对象,只对注解的字段执行加密/解密操作,然后将相同的对象返回给调用者?
1.我可以在自定义注解中传递一些值吗?这样我们就可以显式地告诉实用程序加密/解密了。
例如@PIIData(值=“加密”)
1条答案
按热度按时间w8f9ii691#
您可以使用Java
Reflection API
来完成所需的任务。假设您已经自己定义了AnnotationPIIData
。下面介绍如何实现apply
方法。另外,您还可以自己定义encryptValue
和decryptValue
函数。另外,我假设您的Employee类如下所示
1.要拦截注解,请首先使用
Reflection API
获取apply
方法中的object
参数定义的所有字段,然后迭代每个字段,并使用Reflection API
的isAnnotationPresent
函数检查它是否有一些注解,然后您可以检查注解的值并执行代码逻辑。当Reflection API
在适当的位置替换字段的新值时,不需要返回对象。1.为了确保该方法有效,请定义一些测试。
1.是的,您可以传递诸如
Decrypt
和Encrypt
之类的值来告诉apply
方法要做什么。下面是上述类方法的测试代码
希望这个有用。