java - 如何使用三元运算符中的枚举检查两个条件?
问题描述
我有一个枚举:
public enum GSProccesingType {
bigCover,
cover,
other
}
这样的条件,如果封面来了则被选中FileStoreUtils.coverFileName
,如果bigCover
来了则被选中,bigCoverFileName
否则“04d.png”
我不能为封面和大封面做一个简短的条件
final String fileName = proccesingType == cover ? FileStoreUtils.coverFileName : "%04d.png";
final String fileName2 = proccesingType == bigCover ? FileStoreUtils.bigCoverFileName : "04d.png";
我如何将两条线连接到一条才能正确?
解决方案
您可以像这样使用嵌套的三元运算符:
final String fileName = proccesingType == cover ?
FileStoreUtils.coverFileName :
(proccesingType == bigCover ? FileStoreUtils.bigCoverFileName : "%04d.png");
,但这很难阅读。我建议为此创建一个方法:
private String getFilename(GSProccesingType type) {
switch(type) {
case cover: return FileStoreUtils.coverFileName;
case bigCover : return FileStoreUtils.bigCoverFileName ;
default: return "%04d.png";
}
}
这更长,但更容易阅读和理解。
我还建议遵循普遍接受的命名约定,并将 ALL_UPPERCASE 用于枚举常量。
推荐阅读
- java - 从 Java 中的 JSON Schema 获取可用属性(可能是递归的)
- node.js - 如何在Node js中将自动url传递给http协议
- python - 如何将记录器信息发送到 seq
- c++ - Clion 如何添加调试标志?
- python-3.x - 多维数组;类型错误:只有整数标量数组可以转换为标量索引
- c# - 在 ASP.NET 4.6.1 项目中集成 Microsoft.Extensions.DependencyInjection
- android - 世博会应用程序如何使 android:usesCleartextTraffic 为 false
- c# - 为什么这段代码不是每秒更新标签的内容而是等待 6 秒然后显示最后一个单词?(C#)
- arrays - 在多数据列中寻求多条件的结果,但每个条件值只是谷歌表单个单元格中的多个条件值之一
- selenium-webdriver - TestNG 没有执行所有测试