【问题标题】:How to get value of getter setter method in android?如何在android中获取getter setter方法的值?
【发布时间】:2019-06-10 02:44:54
【问题描述】:

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

所以我有这样的代码

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));
}

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

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

【问题讨论】:

  • getVisitReport() 正在返回一个对象。 'mypackage.VisitReport@12d960c9' 是该对象的字符串表示形式。
  • @Goofynose 那么我怎样才能得到这个对象的值呢?
  • 实现toString()获取对象的值。
  • @flix 你所说的价值是什么意思?我猜你想访问对象的属性之一(idvisitPurpose,...)?您可以通过执行类似db.getVisitReport(id).getVisitPurpose() 的操作来访问这些值
  • @Goofynose 我想获取所有这些对象的值,但我不知道如何获取,我认为这些对象的值类似于{id:0, visitPurpose:"bar", visitResult:"baz"} -cmiiw

标签: java android sqlite react-native getter-setter


【解决方案1】:

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

db.getVisitReport(id).getVisitPurpose

或者

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

那是因为getVisitReport() 返回一个对象。对象是包含一组变量的类的实例。

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

如果要同时获取对象的所有属性,则需要在VisitReport 中创建一个新方法,该方法返回例如对象数组中的所有属性(因为 Java 中的所有对象都扩展 Object ,见How to declare an array of different data types)。

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

【讨论】:

    【解决方案2】:

    猜测如下可能会起作用:-

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

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 1970-01-01
      • 2020-12-27
      • 2011-04-14
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多