Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用特定参数显示冲突的Java标准注释_Java - Fatal编程技术网

使用特定参数显示冲突的Java标准注释

使用特定参数显示冲突的Java标准注释,java,Java,一个方法有一些输入参数,所有参数的可能选项都存储在相关的enum中。但是对argument1使用特定的可能选项和对argument2使用特定的选项会导致冲突。如何向其他开发人员显示警告以避免这种情况 编辑: 当其他人想要使用这些选项时,我想警告他们。例如,当您想使用不推荐使用的方法时假设我们有方法doSmth(Enum1,Enum2),Enum1有选项a、B、C,Enum2有选项X、Y、Z和Enum1.a与Enum2.Z不兼容,我认为制作4个enum更可靠: 枚举11{A,B,C},枚举21{X

一个方法有一些输入参数,所有参数的可能选项都存储在相关的
enum
中。但是对
argument1
使用特定的可能选项和对
argument2
使用特定的选项会导致冲突。如何向其他开发人员显示警告以避免这种情况

编辑:


当其他人想要使用这些选项时,我想警告他们。例如,当您想使用不推荐使用的方法时

假设我们有方法doSmth(Enum1,Enum2),Enum1有选项a、B、C,Enum2有选项X、Y、Z和Enum1.a与Enum2.Z不兼容,我认为制作4个enum更可靠:

枚举11{A,B,C},枚举21{X,Y}, 枚举12{B,C},枚举22{X,Y,Z}

并具有方法doSmth的两个重载版本:

doSmth(枚举11,枚举21), doSmth(枚举12、枚举22)

这些可以组织成两个子类或实现,例如,根据策略模式


是的,这会使代码更加冗长,但这样一来,方法的用户就根本无法提供不兼容的参数对。我认为这比强迫他们在文档中搜索CornerCase要好。

检查参数(尤其是构造函数的参数)并在传递不允许的值或组合时抛出
IllegalArgumentException
是很常见的。例如,考虑这个构造函数:

public DateRange(Date start, Date end) {

}
我想至少添加这样的检查(以及记录允许的内容):


在JavaDoc中写入或记录两个参数的消息都可能导致冲突。或者两者兼而有之。应用@Tom的建议,在上面加上IllegalArgumentException怎么样?@AlexNikolaenkov我想警告其他人,如果他们想使用这些选项。例如,当您想要使用不推荐的方法时。正如您所指出的,这种方法可以工作,但会导致我的代码冗长而复杂。我宁愿避免这样。
/**
 * Constructs a new instance.
 *
 * @param start the start date, cannot be null and must be smaller than the end date
 * @param end the end date, cannot be null and must be larger than the start date
 */
public DateRange(LocalDate start, LocalDate end) {
    if (start == null) {
        throw new IllegalArgumentException("start cannot be null");
    }
    if (end == null) {
        throw new IllegalArgumentException("end cannot be null");
    }
    if (!start.before(end)) {
        throw new IllegalArgumentException("start must be before end");
    }

    this.start = start; 
    this.end = end;
}