Java 如何将类(不是类实例)传递给方法?
我有以下代码要进行泛化:Java 如何将类(不是类实例)传递给方法?,java,gson,android-volley,Java,Gson,Android Volley,我有以下代码要进行泛化: // retrieve json data from server and display the data on a card with two lines private void DisplayClassData(int count, final ArrayList<TwoLineSummaryCardDataObject> tlscdo, final TwoLineSummaryVie
// retrieve json data from server and display the data on a card with two lines
private void DisplayClassData(int count, final ArrayList<TwoLineSummaryCardDataObject> tlscdo,
final TwoLineSummaryViewAdapter tlsva) {
final String url = "https://jsaonurl.com/jsondata";
// want to generify this so that I can pass any class. But not just *any* class. Just some of my
// classes that I have set up.
final GsonRequest gsonRequest = new GsonRequest(url, Myclass1.class, null, new Response.Listener<Myclass1>() {
@Override
public void onResponse(Myclass1 myclass1) { // again, this refers back to the line above
tlscdo.clear();
Realm realm = Realm.getInstance(act);
realm.beginTransaction();
// all of my classes will have a getElement() method which will return a list
// of objects. Perhaps I need to make a prototype and use implements???
for (int i = 0; i < myclass1.getElement().size(); i++) {
tlscdo.add(new TwoLineSummaryCardDataObject(myclass1.getElement().get(i)));
realm.copyToRealmOrUpdate(myclass1.getElement().get(i));
}
realm.commitTransaction();
tlsva.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
if(volleyError != null) Log.e("MainActivity", volleyError.getMessage());
Toast.makeText(MainActivity.this, "Error in Volley", Toast.LENGTH_SHORT).show();
}
}
);
// Add the request to the queue
Volley.newRequestQueue(this).add(gsonRequest);
VolleyHelper.getInstance(getApplicationContext()).addToRequestQueue(gsonRequest);
}
//从服务器检索json数据,并将数据显示在带有两行的卡上
私有void DisplayClassData(整数计数,最终数组列表tlscdo,
最终两行摘要视图适配器(tlsva){
最终字符串url=”https://jsaonurl.com/jsondata";
//想把它泛化,这样我就可以通过任何类。但不仅仅是*任何*类。只是我的一些
//我开设的课程。
final-GsonRequest-GsonRequest=new-GsonRequest(url,Myclass1.class,null,new-Response.Listener()){
@凌驾
public void onResponse(Myclass1 Myclass1){//同样,这指的是上面的一行
tlscdo.clear();
Realm Realm=Realm.getInstance(act);
realm.beginTransaction();
//我所有的类都有一个getElement()方法,该方法将返回一个列表
//对象。也许我需要制作一个原型并使用工具???
对于(inti=0;i
在我的数据结构中,我有七个设置相同的类。如何设置它,以便重用代码并将任何类传递给它?我想您可能想创建一个工厂类,可以调用
myFactory.getAllegements(class您可以实现自定义请求。扩展请求
类,其中
表示解析响应的类型。
在parseNetworkResponse
方法中,您可以实例化七个类中的一个。T应该是所有七个类的父类。如果您想传递一个类,那么,传递一个.Javaclass
对象,也就是说
您需要使用视图适配器的超类或接口,并按如下方式更改方法签名:
private <T> void DisplayClassData(
int count
, final ArrayList<T> data
, final BaseViewAdapter va
, Class<T> itemClass
)
“私人虚空”是什么意思?为什么在虚空之前是空?@Gibbage先生你就是这么定义的。
DisplayClassData(tlsCount, tlscdo, tlsva, TwoLineSummaryCardDataObject.class);
DisplayClassData(esCount, escdo, esva, ExpandedSummaryCardDataObject.class);
... // And so on