相当新的java和学习android并遇到了一个问题的答案 -
我总是定义一个方法,在我的基本活动中为我做演员:
@SuppressWarnings("unchecked")
public <T extends View> T $(int id) {
return (T) findViewById(id);
}
这意味着代替:
Button btn = (Button)findViewById(R.id.btn);
你可以这样做:
Button btn = $(R.id.btn)
有人可以向我解释这个方法吗?特别是使用$符号。
答案 0 :(得分:1)
这不是核心Java构造。
但是,$
是Java中的合法方法名称,因此您可以定义方法$
private static Button $(int resourceIdOfAButton) {
(Button) findViewById(resourceIdOfAButton);
}
我以前从未见过这个,并且认为最好坚持使用常见的Java命名约定。如下所示:选择一个方法名称,让读者了解它的作用。
旁注:
这可能是混淆代码的输出吗?
答案 1 :(得分:0)
这是generic method。它使用类型推断。您可以阅读here,尤其是Target Types section。
Button btn = $(R.id.btn)
程序期待该方法的Button
对象,因此编译器“知道”返回什么以及在转换操作中使用什么。
是的,$
只是方法的名称。但我认为一些更有意义的名字会更好。