java - 如何正确使用枚举?
问题描述
这是我的枚举:
public enum Etichetta {
FT/IR, //problem with '/' character
IB,
COMM;
}
我怎样才能得到那个特殊的字符?请记住,我使用通过邮件在正文中发送给我的这个对象,然后我必须保存到数据库。
public class PrimaNota {
private Integer id;
private String impo;
private String codC;
private Etichetta etichetta;
}
在邮寄方式中,他们将 FT/IR 作为 Etichetta 发送给我。我能怎么做?
解决方案
这个问题不是由枚举引起的。您不能在任何标识符中使用特殊字符“/”,例如枚举、记录、类、函数或变量。
您可以在https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html中找到允许的字符。但是,即使某些东西是合法的,这也不一定意味着这是一个好主意,因为存在某些命名约定,例如类名的 UpperCamelCase。
Identifier:
IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral
IdentifierChars:
JavaLetter {JavaLetterOrDigit}
JavaLetter:
any Unicode character that is a "Java letter"
JavaLetterOrDigit:
any Unicode character that is a "Java letter-or-digit"
“Java 字母”包括大写和小写 ASCII 拉丁字母 AZ (\u0041-\u005a) 和 az (\u0061-\u007a),以及由于历史原因,ASCII 美元符号($ 或 \u0024)和下划线(_ 或 \u005f)。美元符号应仅用于机械生成的源代码中,或者很少用于访问遗留系统上预先存在的名称。下划线可以用在由两个或多个字符组成的标识符中,但由于是关键字,它不能用作一个字符的标识符。
“Java 数字”包括 ASCII 数字 0-9 (\u0030-\u0039)。
但是,您可以做的是创建一个构造函数,该构造函数接受一个字符串参数并将其传递给一个字段,并在创建枚举时调用该构造函数。通过这种方式,您可以将各种字符串与您的枚举常量相关联。
推荐阅读
- python - 在 Python 数据框中按年度日期填补空白的最佳方法
- c# - 更新 Cookie 以删除元素 C#
- c++ - MFC C++ CListCtrl - 删除所有项目不会回收内存
- reactjs - 为什么这个 React 状态返回为未定义?
- forms - 访问 Form.Requery 工作不一致
- c# - Visual Studio 15.8.5 突然无法实时显示错误
- python - aws eb 部署错误:没有为 anaconda-client==1.6.9 找到匹配的发行版
- r - 对重复处理而不是参数执行 pca
- google-cloud-endpoints - 如何使用 Google Cloud Endpoints 设置自定义用户身份验证
- python - int() python3.6的无效文字