1

我正在学习一个教程,并对“this”关键字的使用产生了疑问。在类的构造函数中,this.mContext不是对referred 关键字的多余使用吗?简单地使用mContext不一样吗?

//package org.harrix.sqliteexample;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.Context;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.File;

public class DatabaseHelper extends SQLiteOpenHelper {
  private static String DB_NAME = "info.db";
  private static String DB_PATH = "";
  private static final int DB_VERSION = 1;

  private SQLiteDatabase mDataBase;
  private final Context mContext;
  private boolean mNeedUpdate = false;

  public DatabaseHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
    if (android.os.Build.VERSION.SDK_INT >= 17)
      DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
    else
      DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";

    this.mContext = context;
    copyDataBase();
    this.getReadableDatabase();
  }

}

4

2 回答 2

2

是的,这是多余的,但是如果我们遵循正确的 Java 命名约定,则需要它

 private final Context mContext;

通常应该是

private final Context context;
public DatabaseHelper(Context context) {
    this.context = context
}

此处需要为实例变量分配参数值。

于 2019-10-18T21:42:11.577 回答
0

“唯一一次使用它来访问类成员不是严格冗余的,是当你避免使用同名的本地范围成员时,尽管良好的编程实践应该防止这种情况发生。”

@Abion47

于 2019-10-18T21:29:29.750 回答