"Расширяет объект" имеет цель или является избыточным?

Следуя учебному курсу в Интернете о разработке Soap с Java, я нашел эту ссылку, с довольно необычным кодом для себя.

Код:

public class SoapService extends Object {

    /** Creates new SoapService */
    public SoapService() {
    }

/** This is the SOAP exposes method
*/
    public String sayGreeting(String name)
    {
        return "Hello "+name;
    }
}

Что с синтаксисом 'extends Object'? Я никогда не встречал такого синтаксиса (только для Generics).

Является ли этот синтаксис какой-либо целью или является "простым немым"?

Ответ 1

Если класс Object фактически не является классом java.lang.Object (учебник не включает импорт, поэтому его трудно увидеть), extends Object является избыточным.

Ответ 2

Все объекты в Java неявно расширяют Object, поэтому я бы сказал, что это избыточно.

Ответ 3

Все классы расширяют Object неявно, так что это просто избыточное кодирование не оказывает никакого влияния.

Ответ 4

Выглядит немного как сгенерированный код - это лишнее усилие для генератора исходного кода, чтобы опустить предложение "extends", если оно не требуется, особенно если генератор основан на шаблонах.

Ответ 5

Это просто означает, что он наследует непосредственно из класса Object. Здесь больше о наследовании в Java.

Ответ 6

Нет. Он просто явно делает что-то неявное.

Ответ 7

Это ненужно. Каждый класс в Java расширяет Object на некотором уровне. Оставьте это, если вам не нужно уточнить что-то конкретное.

Ответ 8

Предложение Extends необязательно, как указано в Спецификация языка Java. Если он опущен, класс выводится из java.lang.Object. Это просто вопрос стиля кодирования, чтобы написать его или нет, чтобы записать его в этом случае. Обычно он опускается.

Ответ 9

Это глупый код. Каждый класс в Java расширяет класс Object. Не нужно вводить это в явном виде

Ответ 10

Мой голос, простой тупой - но тогда я играю только с Java...

Но любой класс наследует от класса Object, насколько я знаю...

Ответ 11

Это законный, но бесполезный шаблон. Все расширяет Object, поэтому спецификация языка позволяет вам отказаться от него, и его вообще следует оставить без внимания (некоторые авторы стандартов кодирования не согласны).

Ситуация та же самая в generics (extends Object неявно и избыточно), это просто по какой-то причине (я видел, что некоторые утверждения о ранних ошибках в реализациях Generics имели проблемы с подстановочным знаком?), он поймал еще немного есть.

Ответ 12

Есть одна возможность, и это тот, кто сделал это, не хочет, чтобы вы расширили любые классы. Вы всегда можете сделать обходной путь, но это единственное, что я могу придумать, что имеет смысл.

Ответ 13

Я считаю это излишним.

В исходном коде Junit:

public class TestFailure extends Object {}

Я не знаю, почему этот класс расширяет Object.

Ответ 14

Поскольку java является объектно-ориентированным языком, он поддерживает наследование, которое наследует свойства другого класса, например, все объекты java наследуются от класса java.lang.Object. Из приведенного выше примера понятно, что это объяснение наследование. Обратите внимание, что все классы, независимо от того, указаны они так или нет, будут наследоваться от java.lang.Object.

Ответ 15

Любой класс, который явно не расширяет другой класс, неявно расширяет Object

Ответ 16

все классы расширяют java.lang.Object по умолчанию. Вы можете это увидеть здесь

Ответ 17

На самом деле, это не кажется просто избыточным, особенно при работе в среде веб-сервисов JWS.

При определении класса для типа XML, который будет транспортироваться через SOAP, я использую инструмент wsimport для извлечения клиентских зависимостей из WSDL, который создает локальные для пакета копии этих классов. Явно расширяя Object, можно легко привести между классами из двух разных пакетов.

Невыполнение этого требования приводит к ошибке компиляции при попытке использовать метод класса из пакета A, который ожидает тип аргумента класса в пакете A, и передачи объекта, сгенерированного из эквивалентного класса в пакете B.

Ответ 18

Почему бы не сделать это явным?

Я за его добавление - не все "неявно" знают, что каждый Java-класс неявно расширяет Object. Написав это явно, они не должны угадывать.