2015-03-27 5 views
2

В Java, как вы можете передать тип класса в качестве параметра метода?Передача типа класса методу

Пример, который я дал это основной запрос с использованием Parse.com Android SDK

Сегодня мне нужно сделать это:

//-- This will fetch the car objects 
ParseQuery<CarItem> query = ParseQuery.getQuery(CarItem.class); 
query.findInBackground((FindCallback<CarItem>) callback) 

//-- This will fetch the trucks objects 
ParseQuery<TruckItem> query = ParseQuery.getQuery(TruckItem.class); 
query.findInBackground((FindCallback<TruckItem>) callback) 

Я хочу, чтобы иметь возможность иметь метод fetchObjectList(), который принимает в качестве параметр типа объекта, который я хочу получить, и вызывает правильную функцию callback.

public void fetchObjectList(... classType, ... callback) { 

    ParseQuery<classType> query = ParseQuery.getQuery(classType.class); 

    query.findInBackground((FindCallback<classType>) callback); 

} 

В конце концов, я хочу быть в состоянии сделать это:

fetchObjectList(CarItem, callback1); 
fetchObjectList(TruckItem, callback2); 
+0

Говоря о Дженерики ? 'public void fetchObjectList ( classType)' – NSimon

+0

@NicolasSimon Ваш код даже не синтаксически корректен; и не отвечал на то, что он просил. Он хочет передать тип класса (который похож на ClassName.class или someObject.getClass(), поэтому объект типа Class ). – GhostCat

+0

Да, вы можете это передать. 'public MyClass method1 (MyClass obbject) {}' – Ryan

ответ

1

Похоже, вы после этого что-то вроде

public <T> void fetchObjectList(Class<T> classType, FindCallback<T> callback) { 
    ParseQuery<T> query = ParseQuery.getQuery(classType); 

    query.findInBackground(callback); 
} 

В Java, как вы можете передать Тип класса как параметр метода?

Чтобы передать тип класса в качестве параметра, вы либо сделать

fetchObjectList(String.class, someCallback); 

или, если вы не знаете тип статически, вы могли бы сделать

fetchObjectList(someObj.getClass(), someCallback); 
+1

Это выглядит хорошо. Попробуем сейчас – daarthvader

+0

Он работает! Просто нужно расширять класс ParseObject следующим образом: 'public void fetchObjectList ...' – daarthvader

Смежные вопросы