Изучая стандартную библиотеку Java и ее классы, я не мог не заметить, что некоторые из этих классов имеют методы, которые, на мой взгляд, не имеют никакого отношения к причинам этих классов.Почему стандартные классы иногда имеют, казалось бы, несвязанные методы?
Методы, о которых я говорю, это, например, Integer#getInteger, который извлекает значение некоторого «системного свойства» или System#arraycopy, цель которого четко определена его именем. Тем не менее, оба этих метода кажутся кажущимися неуместными, особенно первый, который по какой-то причине связывает работу с системными ресурсами с классом обертки примитивного типа.
С моей нынешней точки зрения такая политика размещения методов выглядит нарушением основополагающего принципа ООП: каждый класс должен быть посвящен решению своего конкретного набора проблем и не превращаться в швейцарский армейский нож. Но так как я не думаю, что разработчики Java - идиоты, я предполагаю, что есть некоторая логика решения о размещении этих методов именно там, где они есть. Поэтому я был бы признателен, если бы кто-нибудь мог объяснить , что эта логика действительно.
Спасибо!
Update
Несколько человек намекал на то, что Java есть свои нелогичные вещи, которые просто остатки бурного прошлого. Затем я переформулирую свой вопрос: почему Java так не хочет отмечать свои архитектурные недостатки как устаревшие, так как это не так, что существующие устаревшие функции, вероятно, будут прекращены в любое наблюдаемое будущее, и принятие устаревших вещей действительно помогает воздерживаться от их использования в новых созданный код?
@amit, почему бы не отметить такие методы, как осуждается и предложить более элегантное решение тогда? – Semisonic
«Почему этот фреймворк/язык/и т. Д. Не создан так, как я считаю? вопросы обычно не обсуждаются здесь, потому что люди, которые приняли эти дизайнерские решения, не здесь, чтобы ответить вам. – JLRishe
@JLRishe, прошу отличаться. Java - не какой-то причудливый инструмент с загибшими принципами дизайна. Это очень популярная платформа, и все, что так популярно, просто должно быть ясным и логичным для конечных пользователей. Поскольку каждый из нас имеет право понять, почему некоторые функции языка программирования устарели, то же самое можно сказать о функциональности, которая, кажется, заслуживает той же судьбы, но по какой-то причине ее не имеет. – Semisonic