如何在android中获取gettersetter方法的值?

How to get value of getter setter method in android?

我在这里阅读了很多问题,但我现在仍然没有找到适合我案例的任何正确答案

所以我有这样的代码

VisitReport.java

public class VisitReport{
  public static final String TABLE_NAME = "VisitReport";

  public static final String COLUMN_ID = "ID";
  public static final String COLUMN_VisitPurpose = "VisitPurpose";
  public static final String COLUMN_VisitResult = "VIsitResult";

  private int id;
  private String VisitPurpose;
  private String VisitResult;

  public static final String CREATE_TABLE =
      "CREATE TABLE " + TABLE_NAME + "("
          + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
          + COLUMN_VisitPurpose + " TEXT,"
          + COLUMN_VisitResult + " TEXT,"
          + ")";

  public VisitReport() {
  }

  public VisitReport(
    int id,
    String VisitPurpose,
    String VisitResult
  ){
    this.id = id;
    this.VisitPurpose = VisitPurpose;
    this.VisitResult = VisitResult;
  }

  public int getId() { return id; }
  public void setId(int id) { this.id = id; }
  public String getVisitPurpose() { return VisitPurpose; }
  public void setVisitPurpose(String VisitPurpose) { this.VisitPurpose = VisitPurpose;}
  public String getVisitResult() { return VisitResult; }
  public void setVisitResult(String VisitResult) { this.VisitResult = VisitResult;}
}

DatabaseHelper.java(我用的一段代码)

  public VisitReport getVisitReport(long id) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(VisitReport.TABLE_NAME,
        new String[]{
          VisitReport.COLUMN_ID,
          VisitReport.COLUMN_VisitPurpose,
          VisitReport.COLUMN_VisitResult,
        },
        VisitReport.COLUMN_ID + "=?",
        new String[]{String.valueOf(id)}, null, null, null, null);

    if (cursor != null){
      cursor.moveToFirst();
    }
    VisitReport vr = new VisitReport(
      cursor.getInt(cursor.getColumnIndex(VisitReport.COLUMN_ID)),
      cursor.getString(cursor.getColumnIndex(VisitReport.COLUMN_VisitPurpose)),
      cursor.getString(cursor.getColumnIndex(VisitReport.COLUMN_VisitResult))
    cursor.close();
    return vr;
  }

我想使用 bridge module 将值传递给 react native,但出现错误

Cannot convert argument of type class mypackage.VisitReport

这是我试过的代码:

@ReactMethod
public void getVisitReport(int id, Callback cb) {
  DatabaseHelper db = new DatabaseHelper(reactContext);
  cb.invoke(db.getVisitReport(id));
}

找到 作为我的参考 我仍然不明白这些是什么意思,因为当我记录 getVisitReport() 的值时,我得到了 mypackage.VisitReport@12d960c9 但我不知道这个

的意思

我做错了什么吗?任何人都可以帮助我如何让它工作?

猜测类似以下的方法可能有效:-

VisitReport vr = db.getVisitorReport(id);
cb.invoke("ID=" +String.valueOfvr.getid()) + ", Purporse=" + vr.getVisitPurpose"); // etc 
  • 这假定调用可以接受字符串。

您可以通过以下方式单独访问每个值

db.getVisitReport(id).getVisitPurpose

或者

VisitReport vr = db.getVisitReport(id); vr.getVisitPurpose

那是因为getVisitReport() returns一个对象。对象是 class 的实例,它包含一组变量。

当您执行 getVisitReport(id).toString() 时,您正在返回对象本身的 字符串表示形式 而不是 它的值。

如果你想同时获取对象的所有属性你需要在VisitReport里面创建一个新的方法,其中returns所有的属性,例如一个对象数组(因为 Java 中的所有对象都扩展对象,请参阅 How to declare an array of different data types)。

请确保您阅读了有关 java 和对象的更多信息。这是一个很好的link: https://www.tutorialspoint.com/java/java_object_classes.htm