2014-04-11 3 views
0

Я хочу, чтобы создать инфраструктуру Utils классаКак я могу написать общий класс sharePref utils для Android?

, но я не знаю, как сравнивать T с различными типами

я имею в виду T == String, T == Object, T == Integer

(переключатель не работает в Java ниже 1.7, и я не уверен, Java я могу использовать на Android 3 и выше)

public T get<T>(String key) { 


     if (T String.class)) 
     { 
      return prefs.getString(key, ""); 
     } 
     else if() 
     { 

     } 

     return null; 

    } 
+0

Что вы подразумеваете под "по сравнению с различными типами"? Вы имеете в виду ''? – Rogue

+0

Я имею в виду T == String, T == Object, T == Integer –

ответ

0

Я думаю, что вы злоупотребляя генерики тогда. Если T будет совсем другим подтипом, вы должны попробовать что-то по линии интерфейса или просто написать отдельные методы целиком.

Одна мысль на решение, которое приходит на ум:

Map<Object, String> yourPrefs; 

public String get(Object key) { 
    yourPrefs.get(key); 
} 

Большинство из тех классов, которые вы предлагаете все реализовать .equals() и .hashCode(), поэтому вы должны быть хорошо в этом отношении.

+0

, почему неправильно использовать? что случилось с моей идеей? –

+0

Точка дженериков более или менее, чтобы избежать чрезмерной проверки типов и литья. Использование универсальной, а затем проверки типов для множества классов не отличается от передачи объекта «Object». Неограниченные дженерики по существу являются объектами в первую очередь – Rogue

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