#java #android
#java #Android
Вопрос:
Как вы знаете, передача типов классов важна при программировании приложений Android. Одним из простых примеров является использование намерения.
Intent i = new Intent(this, MyActivity.class);
Так что в некоторых ситуациях будет полезно, если я смогу сохранить информацию о типе класса в файл для последующего использования, например, после перезагрузки.
void saveClassTypeInfo(Class<?> classType, String filename) {
String str = null;
// Some job with classType
FileOutputStream fos = null;
try {
fos = new FileOutputStream(filename);
fos.write(str.getBytes());
fos.close();
} catch (Exception e) {
}
}
Если бы я мог сохранить определенным образом, как описано выше, тогда я смог бы вернуть его к подобному Намерению в будущем.
Intent i = new Intent(this, restoredClassInfoFromFile);
Как я могу выполнить такого рода работу? Поскольку Class<?>
это не объект, я вообще не знаю, с чего начать.
[РЕДАКТИРОВАТЬ] .class тоже является объектом, поэтому мы можем сохранить его точно так же, как сохранение объекта.
Комментарии:
1. вы ищете что-то вроде создания класса из имени (строки)
Ответ №1:
Это возможно с помощью ObjectOutputStream
here SaveState
вашего пользовательского класса
public static void saveData(SaveState instance){
ObjectOutput out;
try {
File outFile = new File(Environment.getExternalStorageDirectory(), "appSaveState.ser");
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(instance);
out.close();
} catch (Exception e) {e.printStackTrace();}
}
public static SaveState loadData(){
ObjectInput in;
SaveState ss=null;
try {
in = new ObjectInputStream(new FileInputStream("appSaveState.ser"));
ss=(SaveState) in.readObject();
in.close();
} catch (Exception e) {e.printStackTrace();}
return ss;
}
Полное руководство по записи в файл доступно здесь
И прочитайте объект из файла здесь
Комментарии:
1. Извините, я виноват.. Выглядит просто очаровательно! Миллион благодарностей!!
2. Я никогда не думал, что .class — это объект, очень стыдно.. Благодаря вам, теперь я понимаю, что это значит. Пока что код отлично работает в моем приложении, еще раз большое спасибо!