Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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 有没有办法在Scala的方法参数中声明一组指定的值?_Java_Scala_Methods - Fatal编程技术网

Java 有没有办法在Scala的方法参数中声明一组指定的值?

Java 有没有办法在Scala的方法参数中声明一组指定的值?,java,scala,methods,Java,Scala,Methods,假设我有一个基于状态的学生主题表查询的方法,这个状态可以是“失败”,“通过”,“正在进行” 我如何用一种方法而不是三种不同的方法来做? 我是否可以在方法参数中声明接受字符串的类型?仅使用traits和singleton sealed trait Status //sealed doesn't allow to extend this trait in another compilation unit case object Failed extends Status case object Pa

假设我有一个基于
状态
学生主题
表查询的方法,这个
状态
可以是
“失败”
“通过”
“正在进行”

我如何用一种方法而不是三种不同的方法来做?
我是否可以在方法参数中声明接受字符串的类型?

仅使用traits和singleton

sealed trait Status //sealed doesn't allow to extend this trait in another compilation unit
case object Failed extends Status
case object Passed extends Status
case object Ongoing extends Status

def getStidentSubject(status: Status) = status match {
   case Failed => ...
   case Passed => ...
   case Ongoing => ...
}
或者,您可以只匹配字符串,但它的类型安全性要差得多


如果您需要Scala中更多类似枚举的功能(保留ADT的优势),我建议使用Enumeratum库。

只需使用traits和singleton即可

sealed trait Status //sealed doesn't allow to extend this trait in another compilation unit
case object Failed extends Status
case object Passed extends Status
case object Ongoing extends Status

def getStidentSubject(status: Status) = status match {
   case Failed => ...
   case Passed => ...
   case Ongoing => ...
}
或者,您可以只匹配字符串,但它的类型安全性要差得多


如果您需要Scala中更多类似枚举的功能(保留ADT的优势),我建议您使用Enumeratum库。

您可以使用,也可以使用Java。您能澄清一下您的意思吗?现在,听起来您正在寻找一种基于单个方法状态的查询方法(例如,
StudyDAO.byStatus(status:String)
)是的,类似这样,但我希望状态只接受特定的一组接受值@Seanvieiras Elliott指出,为什么不使用枚举?如果您想要字符串的子类(例如,
type Status='failed'|'passed'|'consuming'
),那么您最可能寻找的概念是单例类型(但枚举应该可以很好地完成)。您可以使用,或者Java。您能澄清一下您的意思吗?现在,听起来您正在寻找一种基于单个方法状态的查询方法(例如,
StudyDAO.byStatus(status:String)
)是的,类似这样,但我希望状态只接受特定的一组接受值@Seanvieiras Elliott指出,为什么不使用枚举?如果您想要字符串的子类(例如,
type Status='failed'|'passed'|'consuming'
),那么您最可能寻找的概念是单例类型(但枚举应该可以)。