2016-11-04 3 views
-2

Я хочу создать объект Java Printwriter, который может использовать любой метод в моей программе. Я попытался создать статический объект Printwriter за пределами любого из методов (если я создаю его внутри метода, его можно использовать только внутри этого метода), однако, чтобы создать объект Printwriter, мне нужно выбросить IOException внутри голова метода, и если я не создаю объект внутри метода, у него нет метода, из которого можно исключить исключение. Я пробовал погулять, как это сделать в 5 миллиардов раз, поэтому, если кто-то может помочь, это будет здорово. Спасибо!Создание объекта PrintWriter, который может быть вызван любым методом в программе

ответ

0

Это должно работать:

public class WriterHolder { 

    public final static PrintWriter GLOBAL_WRITER = createWriter(); 

    private static PrintWriter createWriter() throws IOException { 
    ... create and return that writer 

Вы видите - объявить что ваш метод может бросить исключение является лишь свидетельством того, что это может произойти во время выполнения. Это не мешает вам просто называть этот метод ?! Конечно, дело в том, что, когда это исключение попадает во время выполнения, ваша программа немедленно сработает. Но учитывая тот факт, что этот объект-автор кажется настолько важным для вашего кода, это кажется правильным.

Но также отметить: введение такого глобального состояния через общий объект считается плохим практика. Я бы рекомендовал отступить и попытаться найти дизайн, который не налагает на вас такие последствия.

+0

Похоже, что createWriter должен быть статическим и, вероятно, поймать исключение. Но да, это плохая идея поделиться таким писателем. –

+0

Спасибо, исправлено. – GhostCat