java - 如何将未知的类类型发送到方法并为该类生成参数
问题描述
我想将一个 Java 类发送到一个方法并在 arg 中接收它,该类与我发送的类的类型相同,每次调用此方法时,我都会向它发送一个新类。
示例:这是我创建的类中的方法,并且有一种泛型 T 但我尝试的这种方法不起作用
<T> void getBedInfo(final RecyclerView MainRecycler, Class<T> adapterName){
BedInfoGetter.addSnapshotListener(this, new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
if(e!=null){
return;
}
BedInfo.clear();
for(QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
Bed oneBedInfo = documentSnapshot.toObject(Bed.class);
activeValue = documentSnapshot.getId();
oneBedInfo.getId(activeValue);
BedInfo.add(oneBedInfo);
}
Adpter=new Adpter(BedInfo, context, activity);
MainRecycler.setAdapter(AOP);
MainRecycler.setItemAnimator(new DefaultItemAnimator());
}
});
}
这是方法的调用
databaseHandler.getBedInfo(MainRecycler, AdapterOnePatient.class);
希望我能解释我遇到的问题非常感谢!
解决方案
您需要做的是创建一个 BaseAdapter :
class BaseAdapter {
BaseAdapter(BedInfo info, Context context, Activity activity) {
//...
}
}
然后您需要修改您的方法以仅接受扩展您的 BaseAdapter 的泛型:
<T extends BaseAdapter> void getBedInfo(final Recycler recycler, Class<T> adapterName) {
BedInfoGetter.addSnapshotListener(this, new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot queryDocumentSnapshots, FirebaseFirestoreException e) {
if (e != null) {
return;
}
BedInfo.clear();
for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
Bed oneBedInfo = documentSnapshot.toObject(Bed.class);
activeValue = documentSnapshot.getId();
oneBedInfo.getId(activeValue);
BedInfo.add(oneBedInfo);
}
T adapter = new BaseAdapter(info, context, activity);
MainRecycler.setAdapter(adapter);
MainRecycler.setItemAnimator(new DefaultItemAnimator());
}
});
}
第三步是这样使用它:
getBedInfo(recycler, AdapterOnePatient.class);
推荐阅读
- jquery - ASP.NET MVC 的 jQuery 日期选择器时间格式化
- swift - SwiftUI NavigationView 从内部开始
- angular-reactive-forms - 在我单击输入框外部之前,不会触发对 valuechanges 的角度表单输入验证
- db2 - 从服务器中删除 DB2 FODC 文件
- android - 如何在 ubuntu 20 LTS 中为 android studio 创建启动器图标?
- android - Csound for Android,无输出简单正弦波
- scons - scons:使用 ghs 编译器时编译器内存不足
- python - 如果存在菱形结构,则使用 python,左角的 super() 指的是右上角的类,而不是顶部的类。为什么?
- python - Python套接字在两台机器上不连接
- android - android 无法完全隐藏底部工作表 samsung-s21