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'关键字会产生特定警告
最佳答案
this
关键字不会创建新实例,但是this.
通常用于访问实例变量。
因此,当编译器发现您尝试通过static
访问this.
变量时,它假定您可能犯了一个错误(即您打算访问实例变量),因此它发出警告。
访问static
变量的更好方法是:
RoundCapGraph.strokeWidth = strokeWidth;
编辑:您正在实例方法中设置您的
static
变量。这很好地表明了编译器在警告您访问static
变量时是正确的,就像它是实例变量一样。您应该通过
static
方法设置static
变量,并通过实例方法设置实例变量。