В Java, когда один интерфейс расширяет другого, почему можно было бы повторно объявить метод в подынтерфейсе?

У вас есть проблемы с сервалом здесь

1.При создании другого byte[] array - newDirectoryByteArray. Кажется ненужным, вы можете просто написать

   _Filestream.Write(testAsBytes, 0, testAsBytes.Length);

2. Когда вы записываете в файл, курсор перемещается вместе с ним, если вы хотите использовать тот же FileStream для чтения из файла, вы должны искать желаемое местоположение. То есть до _Filestream.Read(...) вы должны позвонить, например. Filestream.Seek(0, SeekOrigin.Begin);

Из MSDN

Если операция записи выполнена успешно, текущая позиция потока увеличивается на количество записанных байтов. Если возникает исключение, текущая позиция потока не изменяется.

blockquote>
  1. строка data = Encoding.ASCII.GetBytes(charBuffer, 0, 1).ToList(); будет всегда возвращает 0, потому что данные не записываются в charBuffer. Ваши данные находятся в buffer, который будет соприкасаться с 1 по индексу 0 и 0 по всем другим индексам

, вы можете видеть, что с помощью Console.WriteLine(buffer[0]); вы получите 1 и Console.WriteLine(data[0]); выдаст 0

8
задан Uri 19 February 2009 в 04:28
поделиться

5 ответов

Видя, что это происходит при случае при работе на Sun, я могу сказать Вам, как это обычно происходит. Кто-то определяет интерфейс, скажем, Alice, с некоторыми методами; многие разработчики реализуют тот интерфейс.

Некоторое время спустя понято, что им нужен некоторый другой интерфейс, назовите это Bob, который имеет подмножество методов Alice, чтобы позволить этому служить основным интерфейсом для другого интерфейса, Clara.

При перемещении методов Alice в Bob Вы взламываете весь код, который реализует Alice; необходимо возвратиться и по крайней мере перекомпилировать целый набор кода, некоторые из которых Вы не можете владеть, и по политическим причинам, не может повредиться.

Таким образом, Вы не делаете.

14
ответ дан 5 December 2019 в 08:54
поделиться

В Java 5 можно изменить тип возврата метода переопределения путем создания этого более конкретным. Чаще всего документация отличается, таким образом, метод должен быть объявлен снова.

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

BTW: у Различных людей есть другие взгляды на то, что необходимо или удобно, чтобы иметь или лучше сделать явным.

4
ответ дан 5 December 2019 в 08:54
поделиться

Я никогда не видел, что польза рассуждает для этого. Лучшее, которое я видел, то, что:

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

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

Никогда не недооценивайте лень разработчика :-)

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

2
ответ дан 5 December 2019 в 08:54
поделиться

Я сказал бы "нет", нет никакой причины сделать это. Я могу вообразить пару путями, это могло произойти во время эволюции некоторого кода все же. Весьма распространено взять существующий интерфейс и вытащить меньший суперинтерфейс из него. При том обстоятельстве я могу предположить оставлять существующий интерфейс, но просто изменять его для расширения от нового интерфейса.

0
ответ дан 5 December 2019 в 08:54
поделиться

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

-1
ответ дан 5 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: