从官方开发者文档中删除了"避免只需要Ints的枚举"部分.(请参阅为什么Android不使用更多枚举?对于旧版内容)
为什么?是否有Android VM的更改使得提示过时了?
我有以下内容 enum
public enum myEnum
{
ThisNameWorks,
This Name doesn't work
Neither.does.this;
}
Run Code Online (Sandbox Code Playgroud)
enum
带有"友好名字"的s 不可能吗?
我宣布枚举为:
enum Sex {MALE,FEMALE};
Run Code Online (Sandbox Code Playgroud)
然后,迭代枚举,如下所示:
for(Sex v : Sex.values()){
System.out.println(" values :"+ v);
}
Run Code Online (Sandbox Code Playgroud)
我检查了Java API但找不到values()方法?我很好奇这个方法来自哪里?
API链接:https: //docs.oracle.com/javase/8/docs/api/java/lang/Enum.html
是否有关于如何命名Java枚举的"官方"建议?
enum Protocol { HTTP, HTTPS, FTP }
Run Code Online (Sandbox Code Playgroud)
要么
enum Protocols { HTTP, HTTPS, FTP }
Run Code Online (Sandbox Code Playgroud)
我知道在.Net世界中,建议使用单数,除了表示位标志的枚举.只是好奇Java中是否有类似的东西.
一个相似的问题似乎是.Net特定的:枚举的单数或复数?
如果你在enum api中查看方法,name()
它会说:
返回此枚举常量的名称,与其枚举声明中声明的完全相同.大多数程序员应优先使用toString方法,因为toString方法可能会返回一个更加用户友好的名称.此方法主要用于特殊情况,其中正确性取决于获取确切名称,该名称在不同版本之间不会有所不同.
为什么更好用toString()
?我的意思是当name()已经是final时,可以覆盖toString.因此,如果您使用toString并且有人覆盖它以返回硬编码值,则整个应用程序都会关闭...另外,如果您查看源代码,则toString()方法将返回完全正确的名称.这是同一件事.
假设我有这个枚举:
[Flags]
enum Letters
{
A = 1,
B = 2,
C = 4,
AB = A | B,
All = A | B | C,
}
Run Code Online (Sandbox Code Playgroud)
要检查是否AB
已设置,我可以这样做:
if((letter & Letters.AB) == Letters.AB)
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来检查组合标志常量的任何标志是否设置为以下?
if((letter & Letters.A) == Letters.A || (letter & Letters.B) == Letters.B)
Run Code Online (Sandbox Code Playgroud)
你可以换&
一些东西吗?
对于像这样的二进制文件来说不太稳定......
我已经读过可以Singleton
使用以下方法在Java中实现Enum
:
public enum MySingleton {
INSTANCE;
}
Run Code Online (Sandbox Code Playgroud)
但是,上面的工作如何?具体而言,Object
必须实例化.在这里,如何MySingleton
被实例化?谁在做什么new MySingleton()
?
我有一个像:
public enum Blah
{
RED = 2,
BLUE = 4,
GREEN = 8,
YELLOW = 16
}
Blah colors = Blah.RED | Blah.BLUE | Blah.YELLOW;
Run Code Online (Sandbox Code Playgroud)
如何从可变颜色中删除蓝色?
给定C#中的任意枚举,如何选择随机值?
(我没有在SO上找到这个非常基本的问题.我会在一分钟内发布我的答案作为参考,但是请随时发表你自己的答案.)
为什么人们总是使用enum值0, 1, 2, 4, 8
而不是0, 1, 2, 3, 4
?
这与位操作等有关吗?
我真的很感激有关如何正确使用它的小样本片段:)
[Flags]
public enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Delete = 4
}
Run Code Online (Sandbox Code Playgroud)