Java Android资源id前面的美元符号是什么意思
在以下post()的公认答案中,我发现了一个我不理解的语法:Java Android资源id前面的美元符号是什么意思,java,android,Java,Android,在以下post()的公认答案中,我发现了一个我不理解的语法: $(R.id.t9_key_0).setOnClickListener(this); 前面的美元符号是什么意思?它是专门与Android资源ID相关还是更通用的Java语法?搜索引擎结果没有显示任何合适的结果 这是一个方法调用,其中方法名为$。该方法在链接的代码中定义如下: protected <T extends View> T $(@IdRes int id) { return (T) super.findV
$(R.id.t9_key_0).setOnClickListener(this);
前面的美元符号是什么意思?它是专门与Android资源ID相关还是更通用的Java语法?搜索引擎结果没有显示任何合适的结果 这是一个方法调用,其中方法名为
$
。该方法在链接的代码中定义如下:
protected <T extends View> T $(@IdRes int id) {
return (T) super.findViewById(id);
}
protectedt$(@IdRes int-id){
返回(T)super.findViewById(id);
}
该方法是一个助手,它消除了强制转换返回类型findViewById()
的需要
名称
$
的灵感可能来自于。早些时候,我们知道我们需要对findViewById()
方法的每个返回类型进行强制转换。像
惯常方式
TextView textView = (TextView) findViewById(R.id.textView);
这家伙
TextView textView = $(R.id.textView);
他忽略了使用通用方法进行打字。
所以这个家伙用忽略了所有findViewById()的类型转换代码>。如果您不理解泛型,请阅读
protected <T extends View> T $(@IdRes int id) {
return (T) super.findViewById(id);
}
此方法的说明。
- 他创建了一个接受资源id的方法,这样他就可以传递一个id
- 他通过
@IdRes
对该参数进行注释,以便Android Studio仅允许该参数中的资源ID
- 然后他调用了超类方法
findviewbyd
,该方法返回视图
- 他从方法返回了
,所以您将始终在返回类型中拥有视图对象
重要的
现在,您不需要创建泛型方法。因为安卓本身已经改变了他的方法。请参见
findViewById()方法的所有实例现在都返回
T而不是视图
现在你也可以像那个家伙一样不用打字了
TextView textView = findViewById(R.id.textView);
他们正在尝试用Java制作jQuery吗?o、 这很好。您绝对应该试试jQuery。
TextView textView = findViewById(R.id.textView);