我曾经Bundle
在如下所示的接口中一起定义了一组相关的常量(如键):
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
这为我提供了一种更好的方式将相关常量分组在一起,并通过进行静态导入(而非实现)来使用它们。我知道Android
框架也使用像一样的常量Toast.LENTH_LONG
,View.GONE
。
但是,我经常感到,Java Enums
提供代表常数的更好,更强大的方法。
但是使用enums
on 会有性能问题Android
吗?
经过一番研究,我最终陷入了混乱。从这个问题中,
从Android的性能提示中删除了“避免枚举,您只需要整数吗?”很明显,Google
它已从性能提示中删除了
“避免枚举”
,但是从官方培训文档中请注意内存开销部分,它明确指出:
_“枚举通常需要的内存是静态常量的两倍以上。 您应严格避免在Android上使用枚举。”_这仍然有效吗?(例如Java
1.6以后的版本)
还有一个问题,我观察到的是发送enums
跨intents
使用Bundle
我应该序列化给他们(即putSerializable()
,我认为一个昂贵的操作比较原始的putString()
方法沉绵enums
免费提供的话)。
有人可以说清楚哪一种是代表同一个人的最佳方法Android
吗?我应该严格避免使用enums
on Android
吗?
enum
需要其功能时使用。 不要 严格 避免它 。
Java枚举功能更强大,但是如果您不需要其功能,可以使用常量,它们会占用较少的空间,并且它们本身可以是原始的。
方法重载-每个枚举常量都有自己的方法实现
public enum UnitConverter{
METERS{
@Override
public double toMiles(final double meters){
return meters * 0.00062137D;
}
@Override
public double toMeters(final double meters){
return meters;
}
},
MILES{
@Override
public double toMiles(final double miles){
return miles;
}
@Override
public double toMeters(final double miles){
return miles / 0.00062137D;
}
};
public abstract double toMiles(double unit);
public abstract double toMeters(double unit);
}
更多数据-您的一个常数包含多个不能放在一个变量中的信息
复杂的数据-您不断需要的方法来处理数据
您可以接受连续数据
public class Month{
public static final int JANUARY = 1;
public static final int FEBRUARY = 2;
public static final int MARCH = 3;
...
public static String getName(final int month){
if(month <= 0 || month > 12){
throw new IllegalArgumentException("Invalid month number: " + month);
}
...
}
}
用于名称(例如您的示例)
问题内容: 我曾经在如下所示的接口中一起定义了一组相关的常量(如键): 这为我提供了一种更好的方式将相关常量分组在一起,并通过进行静态导入(而非实现)来使用它们。我知道框架也使用像一样的常量,。 但是,我经常感到,提供代表常数的更好,更强大的方法。 但是使用on 会有性能问题吗? 经过一番研究,我最终陷入了混乱。从这个问题中, 从Android的性能提示中删除了“避免枚举,您只需要整数吗?”很明显
问题内容: 有时是有用的,例如,如果我为网站上的所有链接(例如选择器)定义了通用样式,但是当我要覆盖某些规则时,可以有以下选择: 使用更具体(更长)的选择器 采用 哪种方法更好,可能有一些指导原则? 问题答案: 使用非常,非常谨慎- 它会覆盖刚才的一切,甚至是内联样式和混乱在低于显而易见的方式与样式规则“梯级”,让CSS的名字。它很容易使用不当,而且容易成倍增加,尤其是在滥用时。您可以轻松地得出一
问题内容: 我读到应该避免赞成和。我对弄乱Loop并没有信心,也没有完全理解Codex。 下面的代码是否使用?如果是,并且由于应该避免,那么您能建议一种不使用但仍然完成相同任务的方法吗? 此代码用于按随机或按价格对帖子进行排序。 。 使用此代码将链接A(随机)和链接B(价格)发布在我的菜单中。因此,网站的访问者只需单击链接即可对帖子进行排序。 问题答案: 我已经针对WPSE这个主题做了非常详细的解
问题内容: 今天,我有一个同事建议我重构代码,以使用label语句控制通过我创建的2个嵌套的for循环的流。我以前从未使用过它们,因为我个人认为它们会降低程序的可读性。如果论点足够扎实,我愿意改变使用它们的想法。人们对标签陈述有何看法? 问题答案: 如果您可以跳过两个循环(或一个包含switch语句的循环),则许多算法的表达会更容易。不要为此感到难过。另一方面,它可能表明解决方案过于复杂。因此,退
对于与PropertyValueFactory相关的问题,许多回答(和评论)建议避免使用该类和其他类似类。使用这个类有什么问题?
问题内容: 在某些情况下,我喜欢将缓冲显示为的功能,这会给我带来好处,但程序包名称使我有点担心在生产代码中使用它。我了解它 主要 用于测试,但是不确定我是否在生产代码中使用它时遇到麻烦。 我在吸引命运吗? 问题答案: 您不应在生产中使用此代码。无论您要实现什么目标。 最终目的是促进 测试 ,因此始终会在考虑测试的情况下进行扩展,优化( 重写) 。只要可以使该软件包更好地进行测试,就可以在该软件包中