使enum类型表示一组字符串的最佳方法是什么?
我试过这个:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
Run Code Online (Sandbox Code Playgroud)
我怎么能用它们Strings呢?
我正在对枚举进行一些阅读,发现它们与声明常量非常相似.我怎么知道何时使用常量而不是枚举,反之亦然.使用枚举有哪些优点?
我过去常常Bundle在如下界面中定义一组相关常量(如键):
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
Run Code Online (Sandbox Code Playgroud)
这为我提供了一种更好的方法来将相关常量组合在一起并通过静态导入(而不是实现)来使用它们.我知道Android框架也使用常数在同样的方式一样Toast.LENTH_LONG,View.GONE.
但是,我经常觉得Java Enums提供更好,更强大的方式来表示常数.
但是,有没有在使用性能自动问题enums上Android?
通过一些研究,我最终陷入困惑.从Android的性能提示Google中删除了"避免使用只需要Ints的枚举"的问题
吗?显然已经从其性能提示中删除了"避免枚举",但是从它的官方培训文档中了解内存开销部分它清楚地说:"枚举通常需要的内存是静态常量的两倍多.你应该严格避免在Android上使用枚举."这仍然很好吗?(Java在1.6之后的版本中说)
我观察到的一个问题,更是发送enums跨intents使用Bundle我应该序列化给他们(即putSerializable(),我认为一个昂贵的操作比较原始的putString()方法沉绵enums提供它是免费的).
有人可以澄清哪一个是代表相同的最佳方式Android?我应该严格避免使用enums的Android?
打字稿中枚举的用途是什么。如果它的目的只是为了使代码可红,我们就不能为了同样的目的使用常量吗?
enum Color {
Red = 1, Green = 2, Blue = 4
};
let obj1: Color = Color.Red;
obj1 = 100; // does not show any error in IDE while enum should accept some specific values
Run Code Online (Sandbox Code Playgroud)
如果没有typechecking的优势,难道就不能这么写。
const BasicColor = {
Red: 1,
Green: 2,
Blue: 4
};
let obj2 = BasicColor.Red;
Run Code Online (Sandbox Code Playgroud) 我正在编写一个简单的Predicate函数,如下所示:
public static Predicate<String> stringPredicate(String op, String compVal) {
if (op.equals("=")){
return p -> p.compareTo(compVal) == 0;
}
else if (op.equals("<")){
return p -> p.compareTo(compVal) == -1;
}
else if (op.equals("<=")){
return p -> p.compareTo(compVal) == 0 || p.compareTo(compVal) == -1;
}
else if (op.equals(">")){
return p -> p.compareTo(compVal) == 1;
}
else if (op.equals(">=")){
return p -> p.compareTo(compVal) == 1 || p.compareTo(compVal) == 0;
}
return p -> -1 == 0; //return false
}
Run Code Online (Sandbox Code Playgroud)
我希望这个函数适用于Integers,Floats和Strings.因此,不是编写两个相同的谓词函数,一个用于字符串,一个用于Integer + Float,我想写一个,因为compareTo()方法适用于所有3个.我想我可以通过替换
Predicate<String>来实现 …
我需要在我的应用程序中创建100个或更多静态最终常量,我可以按照我的理解实现这两种方式:
class并创建static final字段static final 我在上面的方法中有这些问题:
为什么这是"良好的编码实践"?例如,当我制作Rock Paper Scissors控制台游戏时,大多数人建议使用枚举而不是字符串.有什么不同?