Попробуйте определить набор функций с одинаковыми именами, которые по умолчанию принимают другой тип, и дайте компилятору понять это. Java действительно связывает вам руки при работе с типами, особенно примитивными типами.
public function int getPreference( String key , int missing ) { return sharedPreferences.getInt( key , missing ); }
public function boolean getPreference( String key , boolean missing ) { return sharedPreferences.getBoolean( key , missing ); }
public function String getPreference( String key , String missing ) { return sharedPreferences.getString( key , missing ); }
Edit:
Если вы пытаетесь получить объект (не примитив) независимо от типа, вы можете использовать:
public function Object getPreference( String key , Object missing ) { return sharedpreferences.contains( key ) ? sharedPreferences.getAll().get( key ) : missing; }
Если вы пытаетесь получить определенный тип, например int, независимо от того, что хранится, вы можете использовать:
public function int getPreference( String key , int missing ) {
int result = missing;
Object value = sharedpreferences.contains( key ) ? sharedPreferences.getAll().get( key ) : null;
if ( value instanceof Integer ) result = ((Integer)value).intValue();
if ( value instanceof Boolean ) result = ((Boolean)value).booleanValue() ? 1 : 0;
// repeat for every other primitive wrapper type you care about
return result;
}
Если вы пытаетесь получить результат, только если это определенный тип, вы можете использовать что-то вроде:
public function Object getPreference( Class inRequire , String key , Object missing ) {
Object value = sharedpreferences.contains( key ) ? sharedPreferences.getAll().get( key ) : null;
if ( !( value instanceof inRequire ) ) {
value = null;
}
return ( value == null ) ? missing : value;
}