Я действительно не знаю, что искать, и если это возможно. Я пытаюсь закодировать динамический файловый загрузчик.Определить тип литья и возврата по параметру
Это код:
public static Serializable loadSerializable(Context context,
String filename, Object object) {
final String DEBUGTAG = "Loading data" ;
Serializable serializable = null;
ObjectInputStream oin = null;
try {
File file = new File(context.getFilesDir(), filename);
FileInputStream in = new FileInputStream(file);
oin = new ObjectInputStream(in);
Object readElement = oin.readObject();
serializable = (Serializable) readElement; // here I want dynamic casting
Log.d(DEBUGTAG, "Success : " + filename);
} catch (FileNotFoundException e) {
Log.d(DEBUGTAG, "File not found");
} catch (StreamCorruptedException e) {
Log.d(DEBUGTAG, "Stream Corrupted");
} catch (IOException e) {
Log.d(DEBUGTAG, "IOException");
} catch (ClassNotFoundException e) {
Log.d(DEBUGTAG, "Class not Found");
} catch (NullPointerException e) {
Log.d(DEBUGTAG, "NullPointer - File does not exist yet");
} finally {
if (oin != null)
try {
oin.close();
} catch (IOException e) {
Log.d(DEBUGTAG, "IOException - Stream not closed");
}
}
return serializable;
}
То, что я хочу сделать сейчас, вместо того, чтобы создать новый метод для каждого отдельного объекта, я хочу использовать 3-й аргумент (объект или любой другой) для отливки типа.
Так что я мог бы написать String myString = loadSerializable(this, test.dat, String)
или ArrayList<Fragment> = loadSerializable(this, test.dat, ArrayList<Fragment>)
и так далее .... Помощь оценили
Спасибо .. работал отлично – chrizz42