Java 使用新常量会破坏我的android应用程序吗?

Java 使用新常量会破坏我的android应用程序吗?,java,android,Java,Android,我正在使用以下工具检查视图中屏幕的方向: getResources().getConfiguration().orientation Android的新版本提供了更多的方向状态,所以我考虑使用一个开关来处理所有我想处理的状态 switch (getResources().getConfiguration().orientation) { case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT: case ActivityInfo.SCREEN

我正在使用以下工具检查视图中屏幕的方向:

getResources().getConfiguration().orientation
Android的新版本提供了更多的方向状态,所以我考虑使用一个开关来处理所有我想处理的状态

switch (getResources().getConfiguration().orientation) {
    case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
    case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:
    case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
    case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:
}
现在,这会破坏旧设备上的应用程序吗?考虑到一些常量是API 9+的新常量?我不确定,因为我不确定编译器如何处理常量(
final static
)。它们是内联的还是引用的?我认为如果它们是内联的,那么这个方法就不会有问题

谢谢

现在,这会破坏旧设备上的应用程序吗

如果你以你现在的方式使用它们,就不会。Java编译器将在编译时用等效的数字替换这些符号


但是,您无法通过在旧设备上进行反射来获得这些值,尽管这是一种非常不寻常的技术。

不,额外的案例不会破坏您的应用程序,因为

  • 更改将在编译时添加额外的大小写
  • 在运行时,将确定这种情况
  • 这就像是一个额外的条件

  • 我在调查Android doc上的compat代码,是的,他们使用同样的方法来检测版本。常量是内联的,这很有意义:)我喜欢优化带来有益的副作用。