Java 如何控制方法的输入?

Java 如何控制方法的输入?,java,validation,parameters,Java,Validation,Parameters,我有一个从数据库检索记录的搜索方法,我想限制用户只按名称搜索。我有一个带有搜索参数列表的SearchByenum,对于特定的SearchBy方法,用户只能按特定值进行搜索 public List<Book> getBooks(SearchBy identifierName,List<String> identifierList) throws UnsupportedOperationException{ List<Book> resultList =

我有一个从数据库检索记录的搜索方法,我想限制用户只按名称搜索。我有一个带有搜索参数列表的
SearchBy
enum,对于特定的
SearchBy
方法,用户只能按特定值进行搜索

public List<Book> getBooks(SearchBy identifierName,List<String> identifierList) throws UnsupportedOperationException{

    List<Book> resultList = new ArrayList<Book>();

    if (identifierName.equals(SearchBy.TITLE)) {
        //returns list of BookObjects
    } else if (identifierName.equals(SearchBy.AUTHOR)) {
        //returns list of BookObjects
    } else {
        throw new UnsupportedOperationException("Books can be retrieved only using book titles or author names");
    }
}
public List getBooks(SearchBy identifierName,List identifierList)抛出UnsupportedOperationException{
List resultList=new ArrayList();
if(identifierName.equals(SearchBy.TITLE)){
//返回BookObjects的列表
}else if(identifierName.equals(SearchBy.AUTHOR)){
//返回BookObjects的列表
}否则{
抛出新的UnsupportedOperationException(“只能使用书名或作者姓名检索书籍”);
}
}

除了验证和抛出异常之外,我们如何明确只允许值
TITLE
AUTHOR
作为标识符名称的输入?

我没有使用它,但是这个框架对于您的需求来说是有意义的:

检查(公共)方法和 构造器。所有参数都可以在 将抛出IllegalArgumentException。为创建一致的消息 参数值中的不便之处


很难说出您的意思,但如果您试图验证某个方法的输入,通常会对错误的输入抛出
IllegalArgumentException
,然后客户机代码可以按照他们的意愿处理此问题

您通常会执行以下操作来验证方法的输入:

public void method(String name) throws InvalidArgumentException {

    if (isInvalid(name)) { 
        throw new IllegalArgumentException("The name is invalid");
    }
    else {
        // rest of method ...
    }
}

由您决定如何根据要强制执行的规则验证实际名称。然后,您可以在异常中给出一条合适的消息来解释它可能无效的原因。也许一个正则表达式可以用于验证代码,但是如果不知道验证要求,就不可能在这里推荐一个正则表达式

我对你的意思有些模糊的理解,但你的问题不是很清楚。请不要在没有定义的情况下使用“函数”之类的词。在Java中,我们使用“方法”这个词,除非你指的是方法以外的东西?您说您有一个searchby枚举,但您没有显示它,也没有解释它是如何限制事情的。这一切都很不清楚。您的意思是希望验证传递到搜索方法中的名称吗?当您说希望“控制”仅按名称搜索的用户时,您的意思是什么?请分享您的实现。有关您编写的代码问题的问题必须在问题本身中描述具体问题,并包括重现问题的有效代码。请参阅以获取指导。询问代码的问题必须证明对正在解决的问题的最低理解。包括尝试过的解决方案、它们不起作用的原因以及预期结果。我的票数不足。请检查问题和相关代码。谢谢