Вопросы с тегом «java»

99
Почему стандартные и статические методы были добавлены к интерфейсам в Java 8, когда у нас уже были абстрактные классы?

В Java 8 интерфейсы могут содержать реализованные методы, статические методы и так называемые методы «по умолчанию» (которые классам реализации не нужно переопределять). На мой (возможно, наивный) взгляд, не было необходимости нарушать подобные интерфейсы. Интерфейсы всегда были контрактом, который...

98
Почему трудно заставить Java-программу выглядеть «родной»?

Большинство приложений Java не выглядят так же, как приложения C / C ++. Swing, возможно, был разработан специально для того, чтобы иметь необычный вид, но, основываясь на том, что я прочитал, SWT, например, пытался «выглядеть нативно», и не добился полного успеха. Мой вопрос: Почему разработчикам...

97
Чем ссылка Java отличается от указателя C?

В C есть указатели, а в Java есть так называемые ссылки. У них есть что-то общее в том смысле, что все они указывают на что-то. Я знаю, что указатели в C хранят адреса, на которые они указывают. Ссылка также хранит адрес? Чем они отличаются, кроме того, что указатель более гибкий и подвержен...

97
Является ли инкапсуляция еще одним из ООП слонов?

Инкапсуляция говорит мне сделать все или почти все поля приватными и выставить их через getters / setters. Но теперь появляются такие библиотеки, как Lombok, которые позволяют нам раскрывать все приватные поля одной короткой аннотацией @Data. Он создаст геттеры, сеттеры и конструкторы настроек для...

94
Кто-нибудь может бросить вызов дяде Бобу за его любовь к удалению «бесполезных скобок»?

Я ненавижу ссылаться на контент Paywalled, но это видео показывает именно то, о чем я говорю. Точно 12 минут Роберта Мартина выглядит так: И говорит: «Одна из моих любимых вещей - избавиться от бесполезных скобок», когда он превращает это в это: Давным-давно, в далеком образовании меня учили не...

92
Почему в Java вообще нет оптимизации для хвостовой рекурсии?

Из того, что я прочитал: причина в том, что нелегко определить, какой метод на самом деле будет вызываться, поскольку у нас есть наследование. Однако почему в Java, по крайней мере, нет оптимизации хвостовой рекурсии для статических методов и не реализован надлежащий способ вызова статических...

89
Нужно ли юным умам изучать концепции указателей?

Почему мастер Си Деннис Ричи ввел указатели в Си? И почему другие языки программирования, такие как VB.NET, Java или C #, устранили их? Я нашел несколько пунктов в Google, и я тоже хочу выслушать ваши комментарии. Почему они исключают концепции указателей в современных языках? Люди говорят, что C...

88
Лучше использовать assert или IllegalArgumentException для обязательных параметров метода?

В Java, что более рекомендуется и почему? Оба типа будут генерировать исключения, поэтому обработка их одинакова. assertнемного короче, но я не уверен, насколько это важно. public void doStuff(Object obj) { assert obj != null; ... } против public void doStuff(Object obj) { if (obj == null) { throw...

88
Является ли навязывание одинакового формата кода всем разработчикам хорошей идеей?

Мы рассматриваем возможность введения в нашем проекте единого стандартного формата кода (автоформат с сохранением действий в Eclipse). Причина в том, что в настоящее время существует большая разница в форматах кода, используемых несколькими (> 10) разработчиками, что затрудняет работу одного...

85
Как вы избегаете добытчиков и сеттеров?

У меня были некоторые трудности с дизайном классов. Я читал, что объекты раскрывают их поведение, а не данные; следовательно, вместо использования методов получения / установки для изменения данных, методы данного класса должны быть «глаголами» или действиями, действующими на объект. Например, в...

84
Почему числа с плавающей запятой по-прежнему являются частью языка Java, когда вместо них чаще всего используются двойные числа?

В каждом месте, где я смотрел, написано, что doubleоно превосходит floatпочти во всех отношениях. floatбыл сделан устаревшим doubleв Java, так почему он все еще используется? Я много программирую на Libgdx, и они вынуждают вас использовать float(deltaTime и т. Д.), Но мне кажется, что с ними...

82
Почему существует уровень TRACE, и когда я должен использовать его, а не DEBUG?

В Log4J, Slf4J и нескольких других средах ведения журналов в Java у вас есть два уровня «разработки» для ведения журнала: DEBUG TRACE Я понимаю, что делает DEBUG, потому что объяснение ясно: Уровень DEBUG обозначает детализированные информационные события, которые наиболее полезны для отладки...

82
Разработчики Java сознательно отказались от RAII?

Как давний программист на C #, я недавно узнал больше о преимуществах Resource Acquisition Is Initialization (RAII). В частности, я обнаружил, что идиома C #: using (var dbConn = new DbConnection(connStr)) { // do stuff with dbConn } имеет эквивалент C ++: { DbConnection dbConn(connStr); // do...

80
Почему Java может быть быстрее, чем C ++?

Иногда Java превосходит C ++ в тестах. Конечно, иногда C ++ выигрывает. Смотрите следующие ссылки: http://keithlea.com/javabench/ http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ http://blog.cfelde.com/2010/06/c-vs-java-performance/ Но как это...

80
Как называется функция, которая не принимает аргументов и ничего не возвращает? [закрыто]

В java.util.functionпакете Java 8 мы имеем: Функция : принимает один аргумент, выдает один результат. Потребитель : принимает один аргумент, ничего не производит. Поставщик : не принимает аргументов, дает один результат. ... : другие случаи обработки примитивов, двух аргументов и т. Д. Но мне нужно...

79
Зачем использовать try… наконец без предложения catch?

Классический способ программирования с try ... catch. Когда уместно использовать tryбез catch? В Python следующее кажется законным и может иметь смысл: try: #do work finally: #do something unconditional Тем не менее, код ничего не сделал catch. Точно так же можно подумать, что в Java это будет...

78
Почему String неизменяем в Java?

Я не мог понять причину этого. Я всегда использую класс String, как и другие разработчики, но когда я изменяю его значение, создается новый экземпляр String. В чем может быть причина неизменности класса String в Java? Я знаю, что есть некоторые альтернативы, такие как StringBuffer или...

78
Почему Java не более широко используется для разработки игр? [закрыто]

Я не разработчик игр или что-то еще, но я знаю, что Java не очень широко используется для разработки игр. Java должна быть достаточно быстрой для большинства игр, так в чем же подвох? Я могу думать о некоторых причинах: Отсутствие разработчиков игр с опытом работы с Java Отсутствие хороших...

77
Почему объекты Java не удаляются сразу после того, как на них больше нет ссылок?

В Java, как только у объекта больше нет ссылок, он становится пригодным для удаления, но JVM решает, когда объект фактически удален. Чтобы использовать терминологию Objective C, все ссылки на Java по своей природе являются "сильными". Однако в Objective-C, если у объекта больше нет сильных ссылок,...