方法说明

时间:2015-02-12 21:38:13

标签: java android

相当新的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)

有人可以向我解释这个方法吗?特别是使用$符号。

2 个答案:

答案 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对象,因此编译器“知道”返回什么以及在转换操作中使用什么。

是的,$只是方法的名称。但我认为一些更有意义的名字会更好。