Fruzenshtein аватар

  Задача для школьников vol. 1

8
Находится в разделах:

Нравится мне cloud-cuckoo, вот только обновляется редко... Посему решил сам сделать пост по теме Cool

Недавно на кухоньке во время обеда, зашел разговор о Java-задачах. И мне было предложено решить одну из них. Я ее решил, как только сел за ПК, но ответ оказался не рациональным. Мне ни капельки обидно не было за столь тупую ошибку в моем подходе.
На базе той задачи я решил составить новую, чуть более сложную.

max аватар

  Что такое рефакторинг кода?

17

Смотрим внутри, чтоб на главной не маячило. 

max аватар

  Work as a team

22
Находится в разделах:

work as a team

max аватар

  Видеокурс по Java от партнерского сайта javabegin.ru

22

В этом курсе вы найдете 7 видеоуроков по java. 

info picture УРОК №1

В этом уроке мы с вами напишем первую программу, поймем что такое объект и ООП в Java и немного усложним пример, создадим объект и будем им манипулировать. Для работе в этом уроке вам понадобятся установленные java 1.6 или 1.7 (jdk, не jre, сайт oracle.com) и последняя версия NetBeans (netbeans.org). Все можно скачать с официальных сайтов.

info picture УРОК №2

Сегодня мы с вами пройдем 1 небольшую, но очень полезную тему. 

В прошлом уроке я обещал рассказать про доступы к переменным класса через гетеры и сетеры. 

Зачем они нужны? 

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

  Задача от Amazon'a

24
Находится в разделах:

Given an array of n integers, find the sum of the most common integer.

Example: (2,4,5,6,4) – return 8 (as 4+4 = 8) .
(1,2,1,3,1) – return 3 (as 1+1+1 = 3).

max аватар

  Между прочим

30
Находится в разделах:

max аватар

  Arrays.asList() и remove()

30
Находится в разделах:

Вы создали список с помощью

Поделали какие-то действия и решили удалить некий элемент из коллекции, скажем первый:

И тут внезапно:

  С новым 2012 ГОДОМ!

32
Находится в разделах:

С НОВЫМ ГОДОМ

2012 пришел!! Клауду год! или больше!!!

Год начался неплохо!!

ПАСХА МАШИНА

  Стоимость создания ценного сайта

36
Находится в разделах:

Смотрел я на раздел продаж сайтов на мауле, на пр-су бирже и на форуме ммгп.

Думаю купить что-то путнее с доходом, примрено за косой-другой баксов.

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

 

Зашел на форум друпал, глянул на цены за создание сайтов с функионалом нужным.

Денег там берут примрено 2к-осых баксов за создание......

Раскрутка и наполнение остается за мной.....

 

А купить что-то готовое с доходом, мне кажется нереально за такие деньги....

 

Кстати прикольно подредактировал форму с тэгами, удобно и приятно

П,С, никого не интересует сколько вложен ов сайт, инетерсуют только показалтели))))))

Я сейчас  с этим столкнулся, и вспомнил ка я продавал догфлай))))) ЛОЛОЛО

max аватар

  Почему нельзя обернуть вызов super() блоком try/catch?

51

В Java, первой строкой конструктора должен быть вызов super() - будь он неявным, в случае конструктора по умолчанию, без параметров, или в случае переопределенного конструктора с аргументами. Возникает вопрос, почему же нельзя обернуть вызов конструктора класса-предка в try/catch?

Все дело в том, что если конструктор суперкласса спровоцирует исключительную ситуацию (exception), это будет означать невозможность создания объекта класса-наследника. Невозможно будет сделать вызов, скажем, toString() или equals(). А поскольку наследование - это расширение/переопределение существующего функционала, то в случае exception мы уже не сможем создать свой объект ввиду отсутствия того, что нужно расширять или переопределять.

max аватар

  Можно ли в java отловить Unchecked Exception в try/catch блоке?

43
Находится в разделах:

Во многих книгах написано, что Unchecked Exception не может быть отловлен в коде, то есть мы не можем использовать try/catch блок для ArrayIndexOfBoundsException, NullPointerException. Но, на самом деле, эти исключения могут быть отловлены в коде. 

Еще один интересный момент: можно ли использовать ключевое слово throw с Unchecked Exception? 

 

Единственное отличие между checked и unchecked исключениями заключается в том, что checked должны обязательно быть либо отловлены, либо прокинуты дальше, посредством объявления ключевого слова throws  в сигнатуре метода. 

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

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

 

max аватар

  Почему локальные вложенные классы имеют доступ только к final переменным?

44
Находится в разделах:

Наверняка, Вы встречали такое сообщение об ошибке от компилятора:

Согласно java language specification, вложенные классы внутри метода могут обращаться к переменным метода только при условии, что они объявлены final. 

Но к чему это ограничение, никто не задумывался? Какие проблемы несло бы использование не-final переменных?

Вот пример код для лучшего понимания ситуации:

max аватар

  Лучшая реализация синглтона - enum с одним элементом!

42
Находится в разделах:

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

До релиза java 1.5, существовало два метода реализации синглтонов. Оба метода основывались на закрытом конструкторе и объявлении открытого статического метода для обеспечения доступа к объекту синглтона. В первом случае, объект был final полем класса:

Закрытый конструктор вызывается только один раз, для инициализации  публичного открытого поля Elvis.INSTANCE. Отсутствие публичного и защищенного конструкторов гарантирует лишь один объект: Класс Elvis создается единожды - не больше и не меньше. Хотя, есть один большой недостаток такого подхода - клиент с определенными привилегиями  может вызывать закрытый конструктор с использованием рефлексии с помощью метода AccessibleObject.setAccessible. Чтобы защититься от такой угрозы, необходимо модифицировать конструктор таким образом, чтобы он выбрасывал исключение при попытке создать второй экземпляр. 

   Во втором подходе реализации синглтонов, публичным членом является статический фабричный метод:

  Ты куда пропал блять!? Макс

39

БЛЯ ЕБАНАЯ ХУЙНЯ!

Я в Греции уже миллион лет, я даже узнал чт оу меня на нескольких доменах тиц есть!!! о как бля!

И как мне с тобой радостью то поделиться?

Заебал, выходи на связь, или сюда пиши или я ебу.

max аватар

  Используйте шаблон 'Builder' в случае наличия большого количества аргументов конструктора

36
Находится в разделах:

      Статические фабрики и конструкторы имеют общее ограничение: они плохо масштабируются при большом количестве опциональных (необязательных) аргументов.

Рассмотрим случай класса, описывающего состав продукта, который обычно можно найти на любом продукте в магазине. Допустим, на  этикетке продукта обозначены размер (емкость), количество элементов в упаковке, калории в 1 шт. и более двадцати других параметров: жирность, наличие соды и т.д. Большинство продуктов имеют нулевые значения для необязательных полей. Какие типы конструкторов или статических методов Вы бы выбрали для такого класса? Традиционно, программисты использовали шаблон "Телескопического конструктора". Суть его в следующем :в одном конструкторе  вы описываете в конструкторе только необходимые параметры, в другом - необходимые + 1 необязательный; в третьем - необходимые + 2 необязательных и т.д. В итоге, класс превращается в конструкторного монстра. 

Вот как это выглядит на практике:

max аватар

  Используйте статические фабричные методы вместо конструкторов

36
Находится в разделах:

    Стандартным способом создания объектов класса является использование открытых (public) конструкторов. Однако, существует и другая техника, которую должен знать каждый разработчик.

Класс может объявить статический фабричный метод (static factory method), который будет возвращать объект класса.

    В качестве простого примера можно рассмотреть класс Boolean (враппер над примитивом boolean). Этот метод транслирует boolean в ссылку на объект Boolean:

Статические фабричные методы имеют свои преимущества и недостатки.

 

Преимущества статических фабричных методов

 

Первым преимуществом является наличие имен у методов.

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

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

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

с таким классом придется часто обращаться к документации (если конечно она существует).

 

max аватар

  Java .class file version или под какую джаву скомпилирован класс?

42
Находится в разделах:

Часто бывает необходимо узнать версию бинарного .class файла. 

Например, web/application сервер крутится под пятой джавой, а локально установлена шестая джава. В итоге, с виду, проблему выявить непросто. 

Имея .class file и штатные средства jdk, можно быстро и качественно получить информацию о скомпилированном классе. 

В папке jdk/bin есть отличная тулза javap

С ее помощью, введя в командной строке такую строчку

 

Получим результат:

  Играем в компилятор. Часть 3.

36
Находится в разделах:

У Вас есть следующий код:

 

 

Данный код выдаст ошибку на этапе компиляции:

 

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    Type mismatch: cannot convert from int to byte

    at Test.main(Test.java:6).

 

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

То есть вот так:

 

Однако, это не единственное решение. Wink

 

Какие варианты можете предложить Вы?

max аватар

  Работа за границей

40

Привет всем. 

Имел ли кто опыт трудоустройства за границей с Украины/России без посредничества своих компаний (onsite positions). 

Посоветуйте толковые ресурсы по поиску работы за границей для java developer не через локальные офисы аутсорсинговых компаний, а напрямую. 

Заранее благодарю

 

  Вопрос: Восходящее преобразование и generic

44

Давеча на собеседовании был озвучен вопрос:

Можно ли при определении generic коллекции указать типом переменной коллекцию класса-предка, а проинициализировать ее как коллекцию класса-потомка?

Т.е. можно ли сделать так:

Поскольку собеседование было устным, а ранее я не задавался вопросом о возможности такого подхода, я пошел методом аналогий. Восходящее преобразование возможно? Возможно:

Заполнить generic-коллекцию класса-предка объектами класса-потомка таким образом вручную возможно? Возможно:

Не видя никаких преград на пути разработчиков Java, я ответил, что это возможно. Как вы уже догадались, неверно. Так делать нельзя:

 

Альтернатива, которую нам предлагают, довольна неуклюжая:

Вопрос, что же помешало разработчикам сделать более короткую запись, т.е. автоматическое "восходящее преобразование generic коллекций"? Лежит же на поверхности...