Несколько человек отправили об инициализаторах экземпляра, вот хорошее использование для него:
Map map = new HashMap() {{
put("a key", "a value");
put("another key", "another value");
}};
быстрый способ инициализировать карты, если Вы просто делаете что-то быстрое и простое.
Или использование его для создания быстрого колебания структурируют прототип:
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.add( new JLabel("Hey there"){{
setBackground(Color.black);
setForeground( Color.white);
}});
panel.add( new JButton("Ok"){{
addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae ){
System.out.println("Button pushed");
}
});
}});
frame.add( panel );
, Конечно, этим можно злоупотребить:
JFrame frame = new JFrame(){{
add( new JPanel(){{
add( new JLabel("Hey there"){{
setBackground(Color.black);
setForeground( Color.white);
}});
add( new JButton("Ok"){{
addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae ){
System.out.println("Button pushed");
}
});
}});
}});
}};
Просто возьмите Target
и проверьте, не является ли он нулевым:
object target = myWeakReference.Target;
if (target != null)
{
((MyType)target).Foo();
}
В документах для IsAlive
конкретно говорится:
Потому что объект потенциально может быть утилизировано для вывоза мусора сразу после свойства IsAlive возвращает истину, использование этого свойства не рекомендуется, если вы не тестируете только для ложного возвращаемого значения.
Вы не можете. Назначьте myWeakReference.Target переменной и проверьте значение null.