Ответы пользователя по тегу Java
  • Почему нельзя просто вызвать clone?

    pazukdev
    @pazukdev
    Java Dev
    Почему нельзя, когда можно?
    public class SomeSubClass {
        
        void someMethod() throws CloneNotSupportedException {
            this.clone();
        }
        
    }

    Этот код компилируется.
    Ответ написан
    Комментировать
  • Как связаны Thread.join() и InterruptedException?

    pazukdev
    @pazukdev
    Java Dev
    1. Ставить catch блок нужно потому, что метод join() throws InterruptedException
    2. Метод join кидает InterruptedException в случае, если вызывающий его поток interrupted:
    Thread.currentThread().interrupt();
    t.join(); // will throw InterruptedException
    Ответ написан
    Комментировать
  • Как описать в коде, чтобы выбирался нужный кейс по введённому слову в консоль Java?

    pazukdev
    @pazukdev
    Java Dev
    Если фомулировка "чтобы выбирался нужный кейс" предполагает использование именно конструкции switch, то:

    double area;
    try (Scanner sc = new Scanner(System.in)) {
        String command = sc.nextLine();
        switch (command) {
            case "square":
                area = getSquareArea();
                break;
            case ... // дальше сами    
        }
    }
    Ответ написан
    Комментировать
  • Для чего используются геттеры и сеттеры в Java?

    pazukdev
    @pazukdev
    Java Dev
    Суть я понимаю, что они позволяют получать доступ к переменным других классов с уровнем доступа private


    Они позволяют получать контролируемый доступ. Любая сущность должна быть доступна для внешней среды только через интерфейс. Public методы - это интерфейс любго класса. Setter'ы и Getter'ы - часть этого интерфейса.
    Хотя аксессоры действительно в какой-то мере могут казаться формализмом.
    Ответ написан
    Комментировать
  • Интерфейсы по умолчанию наследуются от Object класса в Java?

    pazukdev
    @pazukdev
    Java Dev
    Интерфейсы в Java не наследуются от Object.
    Ответ написан
    Комментировать
  • Когда в коде следует использовать интерфейсы (Java)?

    pazukdev
    @pazukdev
    Java Dev
    1, Абстракция нужна везде, где будет проходить ось изменений системы. А интерфейс - основное средство достижения абстракции в Java. Из этого следует п.2.
    2. Всегда, когда нужна абстракция (за исключением случаев, когда абстракция должна обладать состоянием. В таком случае вместо интерфейса придется использовать абстрактный класс т.к. интерфейс не может обладать состоянием).
    Ответ написан
    Комментировать
  • Может ли метод интерфейса иметь тело в Java?

    pazukdev
    @pazukdev
    Java Dev
    Body могут (и обязательно должны) иметь static, default (Java 8) и private (Java 9) методы.
    Ответ написан
    Комментировать
  • В чем суть интерфейсов в программировании?

    pazukdev
    @pazukdev
    Java Dev
    1. Класс - это всегда интерфейс + реализация (хотя бы частичная).
    2. Интерфейс - это способ полностью отделить интерфейс от реализаци. Т.е. полностью абстрактный класс. Служит для описания котракта поведения класса для взаимодействия с внешним окружением.
    Ответ написан
    Комментировать
  • Отличия абстрактного класса от интерфейса?

    pazukdev
    @pazukdev
    Java Dev
    1. Interface - это контракт системы с внешним окружением. Более Java-специфично: контракт для класса на определенное поведение реализованный в форме напоминающей полностью абстрактный класс.
    Применять всегда. Это основной способ реализации абстракции.

    2. Abstract class - это шаблон для группы классов кот. не может быть инстанциирован т.к. не содержит полного описания поведения (может содержать частичное).
    Применять только в специфических случаях, когда нужно какое-то стостояние в абстракции.

    Конкретные различия можно посмотреть тут: https://ru.stackoverflow.com/a/1229336/258227
    Ответ написан
    Комментировать
  • Что такое монада?

    pazukdev
    @pazukdev
    Java Dev
    Монада - это абстракция над цепочкой связанных вычислений. Контейнер, который принимает текущее состояние и функцию, которая принимает это состояние в качестве аргумента и возвращает новое состояние. Этот контейнер инкапсулирует среду (контекст) выполнения вычислений с учетом возможных исключений; на выходе только ожидаемые значения. Вобщем, just a monoid in the category of endofunctors (c).
    Ответ написан
    Комментировать