я ситуация представлена ниже:Java: Возьмите анонимный класс вне
Class C1 {
public static void main(String[] args) {
Object o = // new object of some class
delegate(new C2() { // C2 is an abstract class or interface
public void delegateLogic() {
Object my_o = o; // refrences main's local variable
// huge method body
// object o local to main is required here
}
});
}
private void delegate(C2 c2) {
// method body
}
}
Тело delegateLogic(), оказывается очень большой. Для обеспечения работоспособности кода:
- Я хочу создать конкретный класс из C2 и оставить его снаружи, имея при этом способ использования объекта o в основном методе.
- Кроме того, экземпляр C2 должен быть сериализуемым, и, к сожалению, объект o не является сериализуемым. Итак, я не хочу создавать объект-член в C2, передавая объект o в конструкторе.
Любые идеи?
Если вы хотите сделать это сериализуемым, вы должны найти способ захвата, по крайней мере, соответствующих частей 'o' в сериализуемой форме. – Thilo
Плюс, у меня нет контроля над определением класса (возможных классов) o. – Mohitt
Можете ли вы сделать статическое поле? –