Можете ли вы расширить ArrayList в Java?

Если Вы не возражаете, экран, очищающийся..., пробуют это:

@ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=1

START CALC

:BEGIN
  CLS
  IF !COUNT! EQU 1 ECHO \
  IF !COUNT! EQU 2 ECHO -
  IF !COUNT! EQU 3 ECHO /
  IF !COUNT! EQU 4 ECHO -
  IF !COUNT! EQU 4 (
    SET COUNT=1
  ) ELSE (
    SET /A COUNT+=1
  )
  PSLIST CALC >nul 2>&1
  IF %ERRORLEVEL% EQU 1 GOTO END
GOTO BEGIN

:END

РЕДАКТИРОВАНИЕ: Этот образец запустит Калькулятор и затем отобразит "счетчик", пока Вы не закроете Калькулятор. Я использую pslist для проверки на существование CALC.EXE. > nul 2> & 1 перенаправления STDOUT и STDERR к nul, таким образом, ничто от PSLIST не будет отображено.

27
задан Tim Bender 24 January 2011 в 06:23
поделиться

3 ответа

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

Но передовой практикой является делегат , а не расширение. См .: Шаблон декоратора

2
ответ дан 28 November 2019 в 05:02
поделиться

Да, можно.

public class MyArrayList<E> extends ArrayList<E>
{
}

Однако, я не уверен, почему вы хотели бы сделать это.

22
ответ дан 28 November 2019 в 05:02
поделиться

Просто попробуйте. Класс не является окончательным, его конструктор общедоступен, так что вы можете. Тем не менее, это, вероятно, не очень хорошая идея для новичка.

В большинстве случаев это ни для кого не очень хорошая идея. Представьте, что вы добавили некоторую функциональность и получили ExtList1 extends ArrayList. Ваш колледж добавляет другую независимую функциональность, поэтому у вас есть ExtList2 extends ArrayList. Теперь вы хотите их обоих сразу, и вам не повезло.

Или вам нужна та же функция с другой реализацией базового списка (возможно, LinkedList, хотя использовать ее практически всегда неправильно). Опять не повезло.

Это все случаи, когда делегация выигрывает. Это не должно быть более многословным, когда кто-то уже создал базу .


Я бы унаследовал только от ArrayList, если бы была очень веская причина сделать именно это. Возможно, некоторые действительно экстремальные требования к производительности основаны на надлежащих тестах JMH.

0
ответ дан 28 November 2019 в 05:02
поделиться
Другие вопросы по тегам:

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