通过实例引用访问的静态成员(使用'this'关键字)

问题描述 投票:0回答:1
public class RoundCapGraph extends View {
   static private int strokeWidth = 20;

   public void setStrokeWidth(int strokeWidth){
       this.strokeWidth = strokeWidth;
       //warning : static member 'com.example.ud.RoundCapGraph.strokeWidth' accessed via instance reference
   }
}

[在android studio中,我试图使用setStrokeWidth设置strokeWidth。但我得到警告通过实例引用访问的静态成员'com.example.ud.RoundCapGraph.strokeWidth'

问题:'this'关键字是否构成新实例并通过新实例访问变量?

编辑:我真的不需要将strokeWidth变量设置为静态,但是我想了解为什么使用'this'关键字会产生特定警告

java android android-studio static instance
1个回答
0
投票

正确的,静态的成员属于该类,而不是实例。


0
投票

this关键字不会创建新实例,但是this.通常用于访问实例变量。

因此,当编译器发现您尝试通过static访问this.变量时,它假定您可能犯了一个错误(即您打算访问实例变量),因此它发出警告。

访问static变量的更好方法是:

RoundCapGraph.strokeWidth = strokeWidth;
© www.soinside.com 2019 - 2024. All rights reserved.