gpt4 book ai didi

java - 这是使用自定义数据注释的正确方法吗?

转载 作者:行者123 更新时间:2023-12-01 14:07:49 26 4
gpt4 key购买 nike

我定义了自定义注释(DataAttribute),如下所示。我必须多次调用 checkMaxLength() ,超过 10,000 次。 (还有 toolType、reportTitle 和 validLength)

我想问的是..

我认为 a) 是自定义注释的正确(或一般)用法。但如果我调用 checkMaxLength 超过 10,000 次(并且 maxLength 始终为 4000),与 b) 相比,性能不佳。

你对案例 b) 有何看法?这是使用自定义数据注释的正确方法吗?

a)
@DataAttribute(toolType = DataTooltype.CustomDateTime, reportTitle = "DateTime", maxLength = 4000, validLength = 4000, pollutedLength = 100)
public class DateTimeData {
public boolean checkMaxLength(int length) {
if (DataAnnotationUtil.maxLength(this) < length)
return false;
return true;
}
}


b)
@DataAttribute(toolType = DataTooltype.CustomDateTime, reportTitle = "DateTime", maxLength = 4000, validLength = 4000, pollutedLength = 100)
public class DateTimeData {

public int maxLength;

public Email() {
this.maxLength = DataAnnotationUtil.maxLength(this);
}

public boolean checkMaxLength(int length) {
if (this.maxLength < length)
return false;
return true;
}
}

最佳答案

注释对方法执行的性能没有影响。如果您的问题是关于 DataAnnotationUtil.maxLength(this) 的,那么在构造函数中调用一次而不是每次方法调用显然更有效。但由于注释是静态类数据,因此每个类调用一次它会更有效。由于您的方法需要 this 作为参数,我不知道它是否在静态上下文中工作,但您无论如何都不需要它:

@DataAttribute(toolType = DataTooltype.CustomDateTime, reportTitle = "DateTime", maxLength = 4000, validLength = 4000, pollutedLength = 100)
public class DateTimeData {

public static final int MAX_LENGTH = DateTimeData.class.getAnnotation(DataAttribute.class).maxLength();

public DateTimeData() {
}

public boolean checkMaxLength(int length) {
return length < MAX_LENGTH;
}
}

但它甚至更容易,因为您根本不需要任何运行时操作。 MAX_LENGTH 是一个编译时常量(所有注释值都是),因此您可以在类中将其声明为常量并让注释引用它。那么就不需要处理这个注解了:

@DataAttribute(toolType = DataTooltype.CustomDateTime, reportTitle = "DateTime",
// note the reference here, it’s still a single point of declaration:
maxLength = DateTimeData.MAX_LENGTH, validLength = 4000, pollutedLength = 100)
public class DateTimeData {

public static final int MAX_LENGTH = 4000;

public DateTimeData() {
}

public boolean checkMaxLength(int length) {
return length < MAX_LENGTH;
}
}

关于java - 这是使用自定义数据注释的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18758176/

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