Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (14)

Наибольший вклад в теги

Все теги (59)

Лучшие ответы пользователя

Все ответы (148)
  • Зачем и где именно писать @Override?

    EugeneP2
    @EugeneP2
    Java Dev
    Это аннотация пишется над методами, которые переопределяются из супер класса.

    Это что-то вроде страховки, гарантирующая что 100% переопределен метод.

    class A {
    public void superMethod() {}
    }
    
    class B extends A {
    @Override
    public void superMethod() {}
    }


    Компилятор, когда встретит данную аннотацию, проверит, чтоб сигнатуры методов в супер классе и в под классе совпадали, т.е. вы переопределили метод, и в полиморфизме будит вызываться переопределенный метод.

    Если вдруг вы ошиблись в сигнатуре метода (например пропустили букву в название), то компилятор выдаст ошибку
    Ответ написан
    2 комментария
  • Какая разница между этими способами ввода?

    EugeneP2
    @EugeneP2
    Java Dev
    Вместе с JDK можно скачать и исходный код стандартных библиотек джавы. В любой IDE, зажав CTRL и кликнув по имени того, или иного класса, можно перейти к его исходному коду и полюбопытствовать, что же там такое происходить...

    В вашем примере мы видим два конструктора, один принимает символьный поток (Reader), а другой - байтовый поток ("сырые" данные) (InputStream).

    Scanner предназначен для удобного чтения текста из потока, т.е. ему нужен символьный поток (Reader). А что он делает с байтовым поток? - правильно, оборачивает его в Reader:) И если зайти в код конструктора, то мы это увидем:
    public Scanner(InputStream source) {
            this(new InputStreamReader(source), WHITESPACE_PATTERN);
        }

    Все просто, в зависимости от доступного вам потока (Reader/InputStream), вы используете соответствующий конструктор Scanner-а. В вашем примере оба варианта делают одно и тоже.

    Библиотека java.io состоит из декораторов (паттерн такой), они как матрешки, вкладывая их один в другой, вы добавляете функционал.

    Байтовы поток, а нужен символьный? - пффф... обвернули его InputStreamReader. Нужна буферизация? - легко, Обвернули в BufferedReader.
    Ответ написан
    1 комментарий
  • Стоит ли изучать Swing?

    EugeneP2
    @EugeneP2
    Java Dev
    Не трать время. Учи web
    Ответ написан
    3 комментария
  • Насколько нужно знать java для Spring Framework? И зачем нужна java EE?

    EugeneP2
    @EugeneP2
    Java Dev
    Нужно знать Java SE + Servlet API (это уже из Java EE).

    Spring дает все те же возможности (IoC и DI, транзакции и.д.) что и Java ЕЕ, только проще в использовании и не нужен сервер приложение (jboss, glassfish), достаточно tomcat или jetty.

    Java EE это набор спецификаций и интерфейсов, который реализуют производители серверов приложений (jboss, glassfish). Spring - как простая альтернатива.
    Ответ написан
    2 комментария
  • Как записать консольный вывод в файл?

    EugeneP2
    @EugeneP2
    Java Dev
    Самый простой вариант, это в консоле, когда запускаете свою программу

    java Game>file.txt
    или
    java -jar Game.jar>file.txt

    Второй вариант, тоже простой, переопределить System.out

    static {
    		try {
    			System.setOut(new PrintStream(new File("file.txt")));
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static void main(String[] args) throws FileNotFoundException {
    
    		System.out.println("Hello World!"); // будет записано в файл
    	}
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (2)