powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / java трюки.
111 сообщений из 111, показаны все 5 страниц
java трюки.
    #38568207
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предлагаю в это теме выкладывать примеры не очевидного(очевидного не для всех) выполнения кода. желательно очень простые.Надеюсь это расширит наш кругозор.

начну с себя:

вопрос 1 : В каком случае Math.abs вернет отрицательное число?

ответ :Math.abs(Integer.MIN_VALUE) вернет отрицательно число так как положительный(строго >0) и отрицательный(<0) диапазон не симметричен - отрицательных чисел на 1 больше. Когда берется модуль от минимального Integer, то получается положительное число на 1 больше, чем максимальный Integer, а это переполнение и собственно это и есть искомое число.


вопрос 2 : Есть код:
Код: java
1.
2.
int in=2;
long lon=5;


аналогичны ли такие выражения?:

Код: java
1.
 in =in+lon;


Код: java
1.
 in+ =lon;


ответ:
1 -очевидна ошибка компиляции - не стоит заострять внимания.
2- аналогично:
Код: java
1.
in = (int)(in+lon);


поэтому всё хорошо.


Интересно, что предложите вы.
...
Рейтинг: 0 / 0
java трюки.
    #38568602
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Больше понравилось про try/catch/finally


Ответьте подряд на 3 вопрос:
Что вернет:

Код: java
1.
2.
3.
4.
5.
try {
  return "foo";
} finally {
  return "bar";
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
while(true) {
  try {
    return "foo";
  } finally {
    break;
  }
}
return "bar";



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
while(true) {
  try {
    return "foo";
  } finally {
    break;
  }
}
return "bar";



Спойлер:

1:
Результат будет «bar», потому что оператор finally будет подставлен перед оператором return, а значит return из finally-блока будет вызван первым, а return из try-блока вообще не будет вызван.


2:
Результат будет «foo», потому что значение для оператора return будет положено в стек до того, как будет вызван оператор finally, после которого оно будет восстановлено и возвращено. (Мой пример это не показывает, но это именно то, что вы увидите, если посмотрите байт-код.) Таким образом, изменение значения «value» в блоке finally не имеет ни какого значения для оператора return.


3:
Результат будет «bar». Это было удивлением даже для меня, однако все логично, если вы знаете, что оператор break всего лишь GOTO в байт-коде. Т.е. когда finally-блок подставляется как часть внутреннего оператора return, оператор GOTO вызывается раньше, чем инструкция RETURN, что приводит к выходу из цикла. (То же самое для оператора continue внутри finally-блока.)


http://habrahabr.ru/post/212759/
...
Рейтинг: 0 / 0
java трюки.
    #38568649
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин,

2 и 3 кусок кода - одинаковый.
...
Рейтинг: 0 / 0
java трюки.
    #38568655
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerОзверин,

2 и 3 кусок кода - одинаковый.
Код: java
1.
2.
3.
4.
5.
6.
String value = "foo";
try {
  return value;
} finally {
  value = "bar";
}
...
Рейтинг: 0 / 0
java трюки.
    #38568728
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код-майдфак (++i + ++i ) мы обсуждать не будем?
...
Рейтинг: 0 / 0
java трюки.
    #38568735
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonКод-майдфак (++i + ++i ) мы обсуждать не будем?

почему бы и нет? часто спрашивают
...
Рейтинг: 0 / 0
java трюки.
    #38568791
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКод-майдфак (++i + ++i ) мы обсуждать не будем?

зачем? кто то эту муру в жизни использует именно таким образом? уволить
...
Рейтинг: 0 / 0
java трюки.
    #38568848
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинmaytonКод-майдфак (++i + ++i ) мы обсуждать не будем?

зачем? кто то эту муру в жизни использует именно таким образом? уволить

Именно. А кто спрашивает- тот не понимает сути разработки и собеседования. Лучший ответ- "так писать нельзя".

PS: хорошо помогала задача "вставить элемент в упорядоченный однонаправленный список без всяких JDK-классов". Вот тут шевеление извилин видно. Единственный кандидат, быстро набросавший код, потом очень хорошо работал...
...
Рейтинг: 0 / 0
java трюки.
    #38569011
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin
PS: хорошо помогала задача "вставить элемент в упорядоченный однонаправленный список без всяких JDK-классов". Вот тут шевеление извилин видно. Единственный кандидат, быстро набросавший код, потом очень хорошо работал...

и список тоже самописный?
...
Рейтинг: 0 / 0
java трюки.
    #38569195
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

Я бы не сказал, что ответ на вопрос абсолютно правилен. Метод abs вернет Integer.MIN_VALUE согласно спецификации метода abs. А причины такой реализации известны только разработчикам.Почему метод не выбрасывает исключения ? Чем руководствовались разработчики ? Вот это действительно интересно.
...
Рейтинг: 0 / 0
java трюки.
    #38569370
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery Shiskinredwhite90,

Я бы не сказал, что ответ на вопрос абсолютно правилен. Метод abs вернет Integer.MIN_VALUE согласно спецификации метода abs. А причины такой реализации известны только разработчикам.Почему метод не выбрасывает исключения ? Чем руководствовались разработчики ? Вот это действительно интересно.

спецификация действительно не врёт. Это очевидно. Но спека иногда очевидна, а иногда - нет. Вот я и хочу, чтобы здесь собирались вещи, которые кого-то когда-то удивили. не беда, что для кого-то это будет очевидно.
...
Рейтинг: 0 / 0
java трюки.
    #38569602
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Alexey TominPS: хорошо помогала задача "вставить элемент в упорядоченный однонаправленный список без всяких JDK-классов". Вот тут шевеление извилин видно. Единственный кандидат, быстро набросавший код, потом очень хорошо работал...

и список тоже самописный?

А чего там писать?
Код: sql
1.
2.
3.
4.
5.
class Elem {
  private int value;
  private Elem next;
...
}
...
Рейтинг: 0 / 0
java трюки.
    #38569617
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin, что за Value? Шаблон давай.
...
Рейтинг: 0 / 0
java трюки.
    #38569780
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эксклюзивный трюк!

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
import static java.lang.System.out;
import static java.lang.Integer.parseInt;

public class A                                                                                                                                         
{                                                                                                                                                      
    private static boolean isInteger( String v )                                                                                                       
    {                                                                                                                                                  
        try                                                                                                                                            
        {                                                                                                                                              
            parseInt( v );                                                                                                                             
            return true;                                                                                                                               
        }                                                                                                                                              
        catch( NumberFormatException e )                                                                                                               
        {                                                                                                                                              
            return false;                                                                                                                              
        }                                                                                                                                              
    }                                                                                                                                                  
                                                                                                                                                       
    public static void main (String [] args)                                                                                                           
    {                                                                                                                                                  
        int i = 0;                                                                                                                                     
        for( String a : args )                                                                                                                         
        {                                                                                                                                              
            out.printf( "%d = %s\n", i, isInteger(a) ? a : "Not an integer");                                                                          
            ++i;                                                                                                                                       
        }                                                                                                                                              
    }                                                                                                                                                  
}



Позволяет обойтись без оператора if !
...
Рейтинг: 0 / 0
java трюки.
    #38569784
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЭксклюзивный трюк!

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
import static java.lang.System.out;
import static java.lang.Integer.parseInt;

public class A                                                                                                                                         
{                                                                                                                                                      
    private static boolean isInteger( String v )                                                                                                       
    {                                                                                                                                                  
        try                                                                                                                                            
        {                                                                                                                                              
            parseInt( v );                                                                                                                             
            return true;                                                                                                                               
        }                                                                                                                                              
        catch( NumberFormatException e )                                                                                                               
        {                                                                                                                                              
            return false;                                                                                                                              
        }                                                                                                                                              
    }                                                                                                                                                  
                                                                                                                                                       
    public static void main (String [] args)                                                                                                           
    {                                                                                                                                                  
        int i = 0;                                                                                                                                     
        for( String a : args )                                                                                                                         
        {                                                                                                                                              
            out.printf( "%d = %s\n", i, isInteger(a) ? a : "Not an integer");                                                                          
            ++i;                                                                                                                                       
        }                                                                                                                                              
    }                                                                                                                                                  
}



Позволяет обойтись без оператора if !

в книге от head first по паттернам видел что-то подобное) Там говорится, что это способ на любителя)
...
Рейтинг: 0 / 0
java трюки.
    #38569785
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tominredwhite90пропущено...


и список тоже самописный?

А чего там писать?
Код: sql
1.
2.
3.
4.
5.
class Elem {
  private int value;
  private Elem next;
...
}



хотел бы я у вас пособеседоваться)
...
Рейтинг: 0 / 0
java трюки.
    #38569790
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90, ты использовал тернарную операцию.

Доведи дело до конца.
...
Рейтинг: 0 / 0
java трюки.
    #38569806
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonredwhite90, ты использовал тернарную операцию.

Доведи дело до конца.
не понял.

Код: java
1.
2.
3.
4.
int in =1;
long lon =2;
in=(in>lon)?(in+lon):(in-lon);//так нельзя
in+=(in>lon)?(in+lon):(in-lon);//так можно
...
Рейтинг: 0 / 0
java трюки.
    #38569812
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Операция ? это и есть функция внутри которой стоит 'if'. Перепиши код без ее использования.
...
Рейтинг: 0 / 0
java трюки.
    #38569855
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
надо чтобы
Код: java
1.
in+lon



вываливал exception. Или мы вообще о разном?
...
Рейтинг: 0 / 0
java трюки.
    #38569920
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

Инициализация внутри определения анонимного класса (компактный вариант):
Код: java
1.
2.
3.
4.
5.
List<String> myList = new ArrayList<String>() {{
	add("One");
	add("Two");
	add("Three");
}};

На самом деле инициализация происходит внутри конструктора анонимного класса (полный вариант):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
List<String> myList = new ArrayList<String>() {
	
	private static final long serialVersionUID = 1L; // по просьбе eclipse

	{ // Конструктор анонимного класса 
		add("One");
		add("Two");
		add("Three");
	}
};

Название "финта" - Double Brace Initialization
...
Рейтинг: 0 / 0
java трюки.
    #38569921
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
java трюки.
    #38569992
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman,

авторНа самом деле инициализация происходит внутри конструктора анонимного класса (полный вариант):
я думал всё таки в блоке инициализации, который выполняется после конструктора базового класса, но до конструктора анонимного класса.

ссылка на SO реально крутая - надо будет изучить поподробнее ее.
...
Рейтинг: 0 / 0
java трюки.
    #38570007
drsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usmanredwhite90,

Инициализация внутри определения анонимного класса (компактный вариант):
Код: java
1.
2.
3.
4.
5.
List<String> myList = new ArrayList<String>() {{
	add("One");
	add("Two");
	add("Three");
}};

Название "финта" - Double Brace Initialization

есть мнение, что так можно словить конкретный bad luck, тк получившийся объект анонимного класса,
дежит ссылку на внешний объект в котором создан.
...
Рейтинг: 0 / 0
java трюки.
    #38570013
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он будет держать ссылку, пока он сам доступен. Так что все ок.

обычно внутрение классы без внешнего все равно не используются.
...
Рейтинг: 0 / 0
java трюки.
    #38570493
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonredwhite90, ты использовал тернарную операцию.

Доведи дело до конца.

сдаюсь. Открой секрет)
...
Рейтинг: 0 / 0
java трюки.
    #38570582
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет секрета. У тебя стоит задача - отформатировать сообщение?
Перегрузи toString нужным образом и используй. И в твоём user-space
не будет проверок условия чтобы что-то отформатировать.
...
Рейтинг: 0 / 0
java трюки.
    #38570770
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Если будет код "ДО", то можно будет подумать, а так мне не понятно о чем речь.
...
Рейтинг: 0 / 0
java трюки.
    #38570898
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ладно забудь.
...
Рейтинг: 0 / 0
java трюки.
    #38570968
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonА ладно забудь.
ну вот(
...
Рейтинг: 0 / 0
java трюки.
    #38572350
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90, хочешь идею подкину над чем подумать?
...
Рейтинг: 0 / 0
java трюки.
    #38573338
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

хочу
...
Рейтинг: 0 / 0
java трюки.
    #38573378
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот подмай как повторно использовать Enum.
Мне нужно использовать константы внутри него. Создать новый Enum и расширить их.

Декомпилятор показывает что Enum это макрос который разворачивается в

Код: java
1.
2.
3.
public final class TestEnum extends java.lang.Enum<TestEnum> {

}
...
Рейтинг: 0 / 0
java трюки.
    #38573667
J.Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

EnumSet сгодится?
...
Рейтинг: 0 / 0
java трюки.
    #38574708
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonВот подмай как повторно использовать Enum.
Мне нужно использовать константы внутри него. Создать новый Enum и расширить их.

Декомпилятор показывает что Enum это макрос который разворачивается в

Код: java
1.
2.
3.
public final class TestEnum extends java.lang.Enum<TestEnum> {

}



никак?
...
Рейтинг: 0 / 0
java трюки.
    #38576073
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильно, не?
...
Рейтинг: 0 / 0
java трюки.
    #38576074
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
J.Sergemayton,

EnumSet сгодится?
Может быть. Щас пробую.
...
Рейтинг: 0 / 0
java трюки.
    #38582534
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь читал эту книгу: http://www.javapuzzlers.com/contents.html ?
...
Рейтинг: 0 / 0
java трюки.
    #38582546
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman,

http://strangeloop2010.com/system/talks/presentations/000/014/450/BlochLee-JavaPuzzlers.pdf

Вот презентация к ней. Думаю почитать, если руки дойдут.
...
Рейтинг: 0 / 0
java трюки.
    #38592754
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
redwhite90,

Есть такой вопрос. Как из метода, у которого нет секции throws выбросить checked exception.

Меня уверили, что способов как минимум больше 1.
...
Рейтинг: 0 / 0
java трюки.
    #38592759
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Меня уверили, что способов как минимум больше 1.
3 или 4 способа. Уже много раз обсуждали. Поискать?
...
Рейтинг: 0 / 0
java трюки.
    #38592765
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Есть такой вопрос. Как из метода, у которого нет секции throws выбросить checked exception.
Меня уверили, что способов как минимум больше 1.
http://java.dzone.com/articles/throwing-undeclared-checked
...
Рейтинг: 0 / 0
java трюки.
    #38592768
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

мне что-то не найти
...
Рейтинг: 0 / 0
java трюки.
    #38592769
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

спасибо
...
Рейтинг: 0 / 0
java трюки.
    #38597464
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё есть такая малоизвестная штука, что в конструкторе енума нельзя обращаться к статическим полям этого же енума
...
Рейтинг: 0 / 0
java трюки.
    #38597514
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Ещё есть такая малоизвестная штука, что в конструкторе енума нельзя обращаться к статическим полям этого же енума
Не знал. Спасибо.
http://stackoverflow.com/questions/443980/why-cant-enums-constructor-access-static-fields
...
Рейтинг: 0 / 0
java трюки.
    #38597545
Adva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы в enum'e работали статические поля, можно сделать внутри enum'a статический класс:

например

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
public enum Enumeration {

	OFFLINE((byte)0),
	ONLINE((byte)1);


	private final byte code;

	Enumeration (byte code) {
		this.code = code;
		Holder.put(code, this);
	}

	public byte getCode() {
		return code;
	}

	public static Enumeration get(byte code) {
		return Holder.get(code);
	}


	private static class Holder {

		private static final Map<Byte, Enumeration > codes = new HashMap<Byte, Enumeration >();

		public static Enumeration get(byte code) {
			return codes.get(code);
		}

		public static void put(byte code, Enumeration status) {
			codes.put(code, status);
		}
	}

}
...
Рейтинг: 0 / 0
java трюки.
    #38597548
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Adva,

На SO предлагают просто проинициализироваться в статик секции. имхо так проще
...
Рейтинг: 0 / 0
java трюки.
    #38664600
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
class GenericException<T> extends Throwable { } // wrong usage - compiler error
...
Рейтинг: 0 / 0
java трюки.
    #38664601
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

Код: java
1.
class GenericException<T extends Throwable> { }
...
Рейтинг: 0 / 0
java трюки.
    #38664633
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman,

ну тут разница как у композиции и наследования
...
Рейтинг: 0 / 0
java трюки.
    #38672893
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нельзя создать массив generic-ов

например:

Код: java
1.
HashSet<String>[] map = new HashSet<String>[3];


авторerror: generic array creation
...
Рейтинг: 0 / 0
java трюки.
    #38672940
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
redwhite90,

HashSet<String>[] map = new HashSet[3];
...
Рейтинг: 0 / 0
java трюки.
    #38673038
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключевое слово const существует как Java Language Keyword однако не имеет своей реализации в компилляторах.

Думаю что был-бы хороший макрос для замены public static final

Код: java
1.
2.
3.
public MaytonsFuckenClass {
       const int MAYTONS_FUCKEN_CONSTANT=1;
}



Трюк?
...
Рейтинг: 0 / 0
java трюки.
    #38673075
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо ещё ключевое слово ввести для замены private final.
...
Рейтинг: 0 / 0
java трюки.
    #38673089
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опция synthetic существует как модификатор методов на уровне стандартов JVM
однако не определена в Java Language. Оно конечно было-б забавно маркировать
свой "рукотворный" код как автоматический. Но может там для каких Бизонов
или Яков или прочих рогатых жывтоных пригодилось-бы. Как-тот так.
...
Рейтинг: 0 / 0
java трюки.
    #38673231
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avp.mkredwhite90,

HashSet<String>[] map = new HashSet[3];
да, следует учитывать, что так можно, но массив генерит ArrayStoredException именно по тому, что в new написано.
...
Рейтинг: 0 / 0
java трюки.
    #38673253
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90avp.mkredwhite90,

HashSet<String>[] map = new HashSet[3];
да, следует учитывать, что так можно, но массив генерит ArrayStoredException именно по тому, что в new написано.
А не надо выёживаться. Делайте так.

Код: java
1.
HashSet[] arr = new HashSet[3];



Шаблонное выражение <String> - это опция элемента коллекции а не всей коллекции.
...
Рейтинг: 0 / 0
java трюки.
    #38673492
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Шаблонное выражение <String> - это опция элемента коллекции а не всей коллекции.

утверждение весьма спорное.
...
Рейтинг: 0 / 0
java трюки.
    #38673519
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДумаю что был-бы хороший макрос для замены public static final

Код: java
1.
2.
3.
public MaytonsFuckenClass {
       const int MAYTONS_FUCKEN_CONSTANT=1;
}



Юзкейс прекрасный)
Код: java
1.
2.
3.
public class MaytonsFuckenClass {
    const int MAYTONS_FUCKEN_CONSTANT = (int) (Math.random() * 500);
}
...
Рейтинг: 0 / 0
java трюки.
    #38673533
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For AllНадо ещё ключевое слово ввести для замены private final.
Для локальных переменных есть вариант прекрасный (с выведением типа)
http://projectlombok.org/features/val.html

По аналогии думаю можно сделать.
...
Рейтинг: 0 / 0
java трюки.
    #38673568
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mk, авотхрен! Юзай примитивный тип справа. И никаких гвоздей.
...
Рейтинг: 0 / 0
java трюки.
    #38673580
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonavp.mk, авотхрен! Юзай примитивный тип справа. И никаких гвоздей.
int так-то примитвный тип ;)
...
Рейтинг: 0 / 0
java трюки.
    #38673583
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рразрази тебя гром
...
Рейтинг: 0 / 0
java трюки.
    #38674821
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сonstant-specific class bodies

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
public static enum Enumeration {
    ZERO, 
    ONE {
        @Override
        public String toString() {
            return "(" + super.toString() + ")";
        }
    },
    TWO {
        @Override
        public String toString() {
            return "<" + super.toString() + ">";
        }
    },
    THREE {
        @Override
        public String toString() {
            return "[" + super.toString() + "]";
        }
    };
}

public static void main(String[] args) {
    for (Enumeration e : Enumeration.values()) {
        System.out.println(e);
    }
}

Вывод:
Код: java
1.
2.
3.
4.
ZERO
(ONE)
<TWO>
[THREE]
...
Рейтинг: 0 / 0
java трюки.
    #38690187
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
package protected_test.pack1;

public class Source {
    protected int protectedInt= 1;    
}


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
package protected_test.pack2;

import protected_test.pack1.Source;

public class Child extends Source{
   
    public static void main(String[] args) {     
        System.out.println(new Source().protectedInt);      //The field Source.protectedInt is not visible
    }
}



Этот код не компилится поле предка не видно.
...
Рейтинг: 0 / 0
java трюки.
    #38690219
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90 , а зачем в этом исходнике наследование?
...
Рейтинг: 0 / 0
java трюки.
    #38690227
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

попытка дать доступ.
...
Рейтинг: 0 / 0
java трюки.
    #38690233
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно даже так написать - всё равно работать не будет:
Код: java
1.
   System.out.println(((Source) new Child()).protectedInt);
...
Рейтинг: 0 / 0
java трюки.
    #38690284
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Этот код не компилится поле предка не видно.

можно даже так написать - всё равно работать не будет:
Код: java
1.
   System.out.println(((Source) new Child()).protectedInt);


Поле у Source не видно, так как protected.
А Child наследует protectedInt и видно это поле в наследнике.

Код: java
1.
System.out.println(new Child().protectedInt);
...
Рейтинг: 0 / 0
java трюки.
    #38690434
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Этот код не компилится поле предка не видно.Если вы унаследовались от класса, то вы унаследовали и все его открытые и защищённые поля.
Т.е. создав экземпляр собственного класса вы обращаетесь к защищённым полям без всяких выкрутасов. Вне зависимости от того, где эти поля были объявлены - "у нас" или "у предка".
...
Рейтинг: 0 / 0
java трюки.
    #38698228
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public static void main(String[] args){
        boolean a=true;
        boolean b=false;
        System.out.println("a & b = "+(a & b));
        System.out.println("a && b = "+(a && b));
        System.out.println("a | b = "+(a | b));
        System.out.println("a || b = "+(a || b));
        System.out.println("a | b = "+(a ^ b));
    }


Брр...
...
Рейтинг: 0 / 0
java трюки.
    #38698241
Alexey TominPS: хорошо помогала задача "вставить элемент в упорядоченный однонаправленный список без всяких JDK-классов". Вот тут шевеление извилин видно. Единственный кандидат, быстро набросавший код, потом очень хорошо работал...
Ну во первых это слабо связано, умение программировать и "хорошо работал".
А во вторых... что за нафиг? Как это написать Java программу без JDK? Или это был собес на С++ какой нибудь?
...
Рейтинг: 0 / 0
java трюки.
    #38698255
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это 2-я лаба на 1-м курсе. Односвязный список. Вставка. Поиск. Удаление. Любой гуманоид
с It-факультета ее в состоянии решить. И в ней нету ни теоремы Ферма ни философского камня.
...
Рейтинг: 0 / 0
java трюки.
    #38698353
maytonЭто 2-я лаба на 1-м курсе. Односвязный список. Вставка. Поиск. Удаление. Любой гуманоид
с It-факультета ее в состоянии решить. И в ней нету ни теоремы Ферма ни философского камня.

Да хоть 20-й курс в космической академии дальней авиации, изучающий роль влияния филосовского камня на марсианские плантации)
При чем тут это?
Вопрос был как писать java программы без JDK, а не как работает односвязный список...
...
Рейтинг: 0 / 0
java трюки.
    #38698523
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"вставить элемент в упорядоченный однонаправленный список без всяких JDK-классов"

Сорри, а могли бы пояснить что это означает? По сути написать реализацию PriorityQueue одним из известных способов?
...
Рейтинг: 0 / 0
java трюки.
    #38698566
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это, вероятно, означает, "реализовать список примитивов на базе массива", просто потому, что всё остальное явно задействует те самые "классы jdk".
Не очень, правда, понятно, как отобразить результат?.. Видимо, предполагается, что экзаменуемый продемонстрирует ещё и недюжинные познания JNI и API одной или нескольких операционных систем.
...
Рейтинг: 0 / 0
java трюки.
    #38698637
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

ну а почему нельзя самому написать Singly-Linked List с Insertion-Sort или Heap-Based Priority Queue.
...
Рейтинг: 0 / 0
java трюки.
    #38698721
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это был мелкий стёб над формулировкой.
...
Рейтинг: 0 / 0
java трюки.
    #38698865
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияmaytonЭто 2-я лаба на 1-м курсе. Односвязный список. Вставка. Поиск. Удаление. Любой гуманоид
с It-факультета ее в состоянии решить. И в ней нету ни теоремы Ферма ни философского камня.

Да хоть 20-й курс в космической академии дальней авиации, изучающий роль влияния филосовского камня на марсианские плантации)
При чем тут это?
Вопрос был как писать java программы без JDK, а не как работает односвязный список...
Тот кто ставил задачу - скорее всего оговорился.

А писать без JDK можно. В блокноте. На JavaScript.
...
Рейтинг: 0 / 0
java трюки.
    #38698880
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА писать без JDK можно. В блокноте. На JavaScript.
Для того чтобы писать Java код, JDK не нужен.
...
Рейтинг: 0 / 0
java трюки.
    #38698901
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читайте что писал Алексей Томин. Стояла задача "не написать..." а "вставить элемнт...".

Это уже шаг №2, батенька... :)
...
Рейтинг: 0 / 0
java трюки.
    #38699087
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИщущий Знанияпропущено...


Да хоть 20-й курс в космической академии дальней авиации, изучающий роль влияния филосовского камня на марсианские плантации)
При чем тут это?
Вопрос был как писать java программы без JDK, а не как работает односвязный список...
Тот кто ставил задачу - скорее всего оговорился.

А писать без JDK можно. В блокноте. На JavaScript.

Без JDK - значит не использовать классы из JDK. Там же односвязный список есть.
...
Рейтинг: 0 / 0
java трюки.
    #38699106
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominБез JDK - значит не использовать классы из JDK.
Нужно вещи называть своими именами:
API, JSE, Collection Framework.
Называть коллекции - JDK, как-то странно.
...
Рейтинг: 0 / 0
java трюки.
    #38699127
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не использовать java.lang.String....
...
Рейтинг: 0 / 0
java трюки.
    #38699466
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
BlazkowiczAPI, JSE

хотелось бы увидеть ваши определения
...
Рейтинг: 0 / 0
java трюки.
    #38699708
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A(pplication)P(rogramming)I(nterface)
J(ava)S(tandard)E(dition)
...
Рейтинг: 0 / 0
java трюки.
    #38699786
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
с учётом того, как мы дошли до этого места - определения очень ёмкие)
...
Рейтинг: 0 / 0
java трюки.
    #38699846
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С учётом вашего вопроса они ещё и очень точные.
Что именно не устроило в ответе?
...
Рейтинг: 0 / 0
java трюки.
    #38700190
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

ну что значит написать код без JDK мы выяснили

что значит написать код без API ?
что значит написать код без JSE ?
...
Рейтинг: 0 / 0
java трюки.
    #38700816
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ну что значит написать код без JDK мы выяснилиМы выяснили, что написать код можно хоть от руки на листке бумаги, а вот для его компиляции потребуются файл с исходным текстом и javac/ecj. Первый входит в состав JDK, второй - распространяется отдельно и довольствуется JRE.что значит написать код без API ?
что значит написать код без JSE ?Я не собираюсь комментировать ваши домыслы.
Есть вполне стандартная терминология:
1. API - общепринятый термин, не зависящий от языка и системы;
2. JSE - (любая) система исполнения (байт-кода), реализующая вполне конкретные API;
3. Collection Framework - часть JSE. В данном контексте.
...
Рейтинг: 0 / 0
java трюки.
    #38702021
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Basil A. Sidorov1. API - общепринятый термин, не зависящий от языка и системы;
что это в вашем понимании? (иногда я чувствую, что каждый подразумевает своё значение)
автор2. JSE - (любая) система исполнения (байт-кода), реализующая вполне конкретные API;
я думал этим занимается JRE
...
Рейтинг: 0 / 0
java трюки.
    #38702300
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
API - интерфейс, видимый программисту.
Это может быть список экспортов DLL (с указанием соглашений по вызову), набор заголовочных файлов C/C++/MODULA/etc, javadoc и т.п.
JSE предусматривает вполне конкретный интерфейс в рамках спецификации конкретного языка (JAVA).
JRE - конкретная реализация этого интерфейса в рамках спецификации виртуальной ява-машины.

P.S. Спецификация байт-кода ява-машины позволяет однозначно восстановить интерфейс из бинарных образов (class-файлов).
Т.е., технически, JDK - ограничен только памятью и сообразительностью программиста, а если использовать ecj, то и JRE полностью пригоден для разработки.
...
Рейтинг: 0 / 0
java трюки.
    #38702302
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90я думал этим занимается JREТак и есть. Именно поэтому JRE является конкретной реализацией.
...
Рейтинг: 0 / 0
java трюки.
    #38702832
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Basil A. SidorovAPI - интерфейс, видимый программисту.
Это может быть список экспортов DLL (с указанием соглашений по вызову), набор заголовочных файлов C/C++/MODULA/etc, javadoc и т.п.
JSE предусматривает вполне конкретный интерфейс в рамках спецификации конкретного языка (JAVA).

Получается, что java api == JSE ?
...
Рейтинг: 0 / 0
java трюки.
    #38705542
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Получается, что java api == JSE ?Собрались похерить весь JEE?
Java SE API.
В строгом соответствии с картинкой
...
Рейтинг: 0 / 0
java трюки.
    #38726665
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не трюк. Так наблюдение.

Java обладает внушительным "скобочным" синтаксисом. В отличие от этих ваших Питонов со Скалами.
Но вот для синтаксиса утверждений сделано исключение. Вы опускаете скобки.

Код: java
1.
assert phone != null : "Phone is not null";



При этом помним также что java не обладает пре-процессорами, макро-процесорами и расширителями
уровня language.
...
Рейтинг: 0 / 0
java трюки.
    #38727467
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonПри этом помним также что java не обладает пре-процессорами, макро-процесорами и расширителями
уровня language.
Обладает.

javax.annotation.processing

http://projectlombok.org/features/val.html
http://projectlombok.org/features/Data.html
http://projectlombok.org/features/GetterSetter.html

https://github.com/peichhorn/lombok-pg/wiki/@ExtensionMethod
https://github.com/peichhorn/lombok-pg/wiki/@LazyGetter
https://github.com/peichhorn/lombok-pg/wiki/@FluentSetter
...
Рейтинг: 0 / 0
java трюки.
    #38731944
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сегодня захотел вот такой вот кусочек рафинада.

Опредление
Код: java
1.
public Object getAt(int i){...} 


позволяет позволяет применять к себе макроподстановку вида
Код: java
1.
someCollection[i]
...
Рейтинг: 0 / 0
java трюки.
    #38732461
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

что-то я не понимаю, что Вы написали.
...
Рейтинг: 0 / 0
java трюки.
    #38732596
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А забудь. Я такой непредсказуемый. С утра одни мысли - вечером другие.
...
Рейтинг: 0 / 0
java трюки.
    #38732671
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonСегодня захотел вот такой вот кусочек рафинада.
Опредление
Код: java
1.
public Object getAt(int i){...} 


позволяет позволяет применять к себе макроподстановку вида
Код: java
1.
someCollection[i]


Кстати, однажды что-то подобное я делал. В EL можно пользоваться свойствами и таблицами, а мне надо было вывести значение некоторой функции
Код: java
1.
String someFunction(int i)


недолго думая соорудил такую конструкцию
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
private Map<Integer,String> fakemap = new HashMap<Integer,String>() {
  @Override
  public String get(Object key) {
    return someFunction((Integer) key);
  }
}
public Map<Integer,String> getFakemap() {
  return fakemap;
}


EL спокойно выводит такое выражение
Код: html
1.
#{someBean.fakemap[i]}


Можно использовать функции не только с целым аргументом.
HashMap использовал просто для того, чтобы сократить писанину (иначе пришлось бы переопределять все методы интерфейса Map)
...
Рейтинг: 0 / 0
java трюки.
    #38732739
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСегодня захотел вот такой вот кусочек рафинада.

Опредление
Код: java
1.
public Object getAt(int i){...} 


позволяет позволяет применять к себе макроподстановку вида
Код: java
1.
someCollection[i]


а для танкистов, можно малость развернуто?
...
Рейтинг: 0 / 0
java трюки.
    #38732753
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDivermaytonСегодня захотел вот такой вот кусочек рафинада.

Опредление
Код: java
1.
public Object getAt(int i){...} 


позволяет позволяет применять к себе макроподстановку вида
Код: java
1.
someCollection[i]


а для танкистов, можно малость развернуто?
Это из Groovy
...
Рейтинг: 0 / 0
java трюки.
    #38732763
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For All,

во блин, а у меня чуть моск не лопнул 0_о
...
Рейтинг: 0 / 0
java трюки.
    #38732796
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дельфисты смотрят на вас с удивлением. У них это с первой версии. Года с 1995.
...
Рейтинг: 0 / 0
java трюки.
    #38732840
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сишники смотрят на Делфистов как на ... эээ ну вобщем смотрят с удивлением.
...
Рейтинг: 0 / 0
java трюки.
    #38733982
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
начиная с 4 jdbc нет надобности писать
Код: java
1.
class.forName(driverName);
...
Рейтинг: 0 / 0
java трюки.
    #38734014
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakДельфисты смотрят на вас с удивлением. У них это с первой версии. Года с 1995.

"Дедушка" Мейер посмеивается- у него это уже с 87го года.
Правда a#5, а не a[5], зато всё единообразно (операция # для класса и целого числа).

Кстати, в отличии от авторов java авторы opject pascal Мейера читали, и не зря...
...
Рейтинг: 0 / 0
java трюки.
    #38734081
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90начиная с 4 jdbc нет надобности писать
Код: java
1.
class.forName(driverName);

Это не от типа драйвера зависит. Эту штуку не надо вызывать, если:
1) У вас Java >= 6.
2) В jar-нике драйвера он прописан как сервис.
См. http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html
...
Рейтинг: 0 / 0
java трюки.
    #38734753
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cdtyjv,

http://stackoverflow.com/a/5484254/2674303

тут у людей другое мнение.
...
Рейтинг: 0 / 0
111 сообщений из 111, показаны все 5 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / java трюки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]