Java - 静态变量和具有相同名称的参数

Gui*_*rme 8 java

假设我有一个Helper类,如下所示:

public class Helper {
    private Context context;
    private static HelperListener listener;


    public Helper(Context context, HelperListener listener) {
        this.context = context;
        listener = listener; // Can't tell which one
    }
}
Run Code Online (Sandbox Code Playgroud)

context并且listener是在构造函数中仅设置一次的变量.

context不是static,因此我可以使用参数区分变量this.context.

listener另一方面,是static.在涉及静态变量时,有没有办法将它与参数区分开来?

ars*_*jii 14

您可以使用类名限定静态变量以区分它:

Helper.listener = listener;
Run Code Online (Sandbox Code Playgroud)

  • 为什么不this.listener =听众; (2认同)

ani*_*udh 9

您可以使用Helper.listener = listener;虽然不建议从构造函数设置静态变量的值.

  • 正如arshajii所说,这是不错的做法,但是......静态变量独立于对象实例,并且在创建对象时调用构造函数.因此,每次创建Object时,都会设置静态变量,尽管其值与正在创建的对象无关. (4认同)
  • 这不一定是不好的做法.这取决于你想要做什么(例如,有时你可能希望通过更新构造函数中的静态变量来保持实例化计数). (2认同)