gpt4 book ai didi

java - 通过实例引用访问静态成员的最佳解决方案

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:50 26 4
gpt4 key购买 nike

我几乎所有的类(class)都有这种方法。

//listener - info
private void clickInfoListener(final ImageView iv, final int title, final int text){
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
materialHelper.showInfoDialog(MainActivity.this, iv, title, text);
}
});
}

在辅助类中访问这个静态方法

public static void showInfoDialog(Context context, final ImageView iv, final int title, final int text){
iv.setImageResource(R.drawable.ic_info_touched);
//
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(text);
builder.setPositiveButton(R.string.gotIt, null);
builder.show();
//
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
iv.setImageResource(R.drawable.ic_info_primary);
}
}, 25);
}

我收到“静态成员正在被实例引用访问”的 lint 警告。我不知道如何在这里不使用“this”。所以我有两个选择。

1) 忽略 lint 警告

2) 在我的辅助方法中删除“static”。

哪个更好?或者提出第三种解决方案。

最佳答案

警告是说您正在通过实例 materialHelper 而不是通过类 MaterialHelper 本身调用静态方法 showInfoDialog。这是“不好的”,因为它表明该方法实际上是一个实例方法,它依赖于实例中的某些状态。

解决办法是更换

materialHelper.showInfoDialog(...)

在你的代码中随处可见

MaterialHelper.showInfoDialog(...)

关于java - 通过实例引用访问静态成员的最佳解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41336509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com