Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android资源id前面的美元符号是什么意思_Java_Android - Fatal编程技术网

Java Android资源id前面的美元符号是什么意思

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

在以下post()的公认答案中,我发现了一个我不理解的语法:

$(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);