Я хочу инкапсулировать запросы в мой сервис Android, потому что у сервиса есть информация для генерации соответствующих команд.Однако я хотел бы ограничить токены класса, отправляемые в службу, расширенную из ICommand, чтобы я не разрешал отправку запросов с недействительными токенами.Это объяснит больше:
public class ServiceRequestArgs implements Serializable {
private static final long serialVersionUID = -7484807396752170166L;
private Class m_token;
//warning: references to generic type Class<T> should be parameterized
private IFileUploadListener m_listener;
public <T extends ICommand> ServiceRequestArgs(
Class<T> cmdClass, IFileUploadListener listener)
{
m_token = cmdClass;
m_listener = listener;
}
public Class getClassToken() //warning: references to generic...
{
return m_token;
}
public IFileUploadListener getListener()
{
return m_listener;
}
}
//use ->
Intent intent = new Intent(this, MyService.class);
intent.putExtra("svc_command",
new ServiceRequestArgs(GetListCommand.class, m_listener);
bindService(intent, m_serviceConnection, 0);
Я понимаю общие ограничения C #, но я не уверен, как мне использовать это в Java.
Редактировать
Вот что я придумал:
public class ServiceRequestArgs<T extends ICommand> {
private ServiceRequestArgs(Class<T> token, IFileUploadListener listener);
public Class<T> getClassToken(); //...
public IFileUploadListener getListener(); //...
//to make it easier to call. sorry, cant remember where I found this.
public <C extends ICommand> ServiceRequestArgs<C> create(
Class<C> token, IFileUploadListener listener)
{
return new ServiceRequestArgs<C>(token, listener);
}
}