gpt4 book ai didi

java - 在java中断言两个具有有限属性的实例

转载 作者:行者123 更新时间:2023-11-30 03:13:32 25 4
gpt4 key购买 nike

我正在开发一个验证系统来比较同一类的两个实例。

我正在使用反射断言来比较实例的属性。但有时我们无法期望某些属性的精确值,例如系统生成时间、随机数等。

示例:考虑一个具有如下属性的类。

类 => 交易详细信息

属性 => 1: 交易 ID 2:交易状态 3:交易时间

TransactionDetails 的实际实例

1: transactionID : 987DFGAS876
2: transactionStatus : SUCCESS
3: transactionTime : 2015-10-15T15:46:53.378+05:30

预期的 TransactionDetails 实例

1: transactionID : 987DFGAS876
2: transactionStatus : SUCCESS
3: transactionTime : 2015-10-15T15:39:29.127+05:30

由于时间差异,断言结果=> false

所以,如果我给出如下所示的预期实例,

具有有限(必需)值的 TransactionDetails 预期实例

1: transactionID : 987DFGAS876
2: transactionStatus : SUCCESS

断言结果 => false 因为时间差异 ( null & 2015-10-15T15:46:53.378+05:30)

因此,就我而言,我只需将丰富的 2 个值与实际实例进行比较,需要跳过属性用户不想断言这些值。

为了实现这一目标,我正在进行反射来获取所有属性,并使用实际实例检查预期实例中的丰富属性。

但这会导致大型实例的性能问题。有没有简单的这个需求的解决方案?

请分享您的想法来解决此问题,提前致谢。

最佳答案

您可以标记要与自定义注释进行比较的字段。那么你可以得到是否也应该通过反射来比较字段:

@CheckAnnotation
String tocompare = "SomeTimeDataString";
...
Annotation[] annotations = field.getDeclaredAnnotations();

for(Annotation annotation : annotations){
if(annotation instanceof CheckAnnotation){
//Compare the field
}
}

关于java - 在java中断言两个具有有限属性的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33148603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com