Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将类(不是类实例)传递给方法?_Java_Gson_Android Volley - Fatal编程技术网

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应该是所有七个类的父类。

如果您想传递一个类,那么,传递一个.Java
class
对象,也就是说

您需要使用视图适配器的超类或接口,并按如下方式更改方法签名:

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