为什么android中的R类不是静态的?当它包含所有静态内容时。
public final class R {
//static content
}
答案 0 :(得分:1)
R.java是动态生成的类,在构建过程中创建,用于动态识别所有资产(从字符串到android小部件到布局),用于Android应用程序中的java类。请注意,这个R.java是特定于Android的(虽然您可以将其复制到其他平台,非常方便),因此它与Java语言结构没有太大关系。
android.R.java不仅仅是存储XML ID的地方。它还包含对资源的访问 - 例如drawable,布局,字符串,数组,以及您可以在资源中声明的任何内容。
我个人认为使用Eclipse时它很有用。我只需输入findViewById(R.id。并且Eclipse将显示一个工具提示,其中包含可供选择的选项列表。
然而,在平台级别,我会说硬编码的id变量有助于防止在使用字符串识别资源时出现错误 - 在编程时(或在编译期间,而不是在运行时)可以调试。
答案 1 :(得分:1)
根据Java语言策略,顶级公共类不能是静态的。当你深入研究静态类的使用时,你会发现它用于创建独立的内部类,它不包含外部类的匿名引用。因此,类之前静态关键字的目的和用途是完全不同的。
非静态内部课程
class A
{
int var1;
class B{
int calc(){
// can access A.var1 directly
}
}
}
静态内部课程
class A
{
int var1;
static class B{
int calc(){
// cannot access A.var1 directly, need object to be passed
}
}
}