ALI*_*HAN -5 java android firebase
给出以下代码:
dm.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {
String value = dataSnapshot.getValue(String.class);
arrayList.add(value);
adapter.notifyDataSetChanged();
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么要String.class在方法中使用
dataSnapshot.getValue(String.class);
Run Code Online (Sandbox Code Playgroud)
目的是什么?我从Firebase获取数据时正在使用它。我的代码工作正常。只是想学习含义。
public T getValue (Class<T> valueType)此方法用于将快照中包含的数据编组到您选择的类中。该类必须符合2个简单的约束:
该类必须具有不带参数的默认构造函数
该类必须为要分配的属性定义公共获取方法。反序列化实例时,没有公共获取器的属性将设置为其默认值
因此,由于此方法可以返回任何类型的类,因为它是通用方法,因此必须将方法返回的类的类型指定为参数。在这种情况下,它value是一个String,因此您需要传递String.class到方法中以String退出。
尽管在这种情况下,由于String返回了a,所以您可以选择使用无参数getValue()方法,并将结果转换如下:
String value = (String) getValue();
Run Code Online (Sandbox Code Playgroud)
从JavaDoc:
getValue()以本机类型返回此快照中包含的数据。返回的可能类型为:
- 布尔型
- 串
- 长
- 双
- 地图
- 清单
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |