Сегодня я просмотрел код Java и обнаружил странный синтаксис:
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
Я думал, что это не может скомпилироваться, и хотел исправить то, что считал опечаткой, но потом вспомнил, что компилятор Java действительно принял это!
Может кто-нибудь помочь мне понять, что это значит? Это набор функций?
Ответы:
Это метод, возвращающий
int[]
.источник
public int[] foo()[][] {
и заставить людей кровоточить.Забавный вопрос. В java можно сказать
int[] a;
, а такжеint a[];
.С этой точки зрения, чтобы получить тот же результат, нужно просто переместить
[]
и написать
public int[] get() {
.По-прежнему похоже, что код пришел из обфускатора ...
источник
Поскольку есть тег C, я отмечу, что похожая (но не идентичная) нотация возможна в C и C ++:
Здесь функция
f
возвращает указатель на массив из 10 целых чисел.Java просто не нужны звездочка и круглые скобки.
источник
f()[]
значение чего-то вроде(*f())
.Синтаксис java позволяет:
а также
что выглядит более знакомо, исходя из синтаксиса в стиле c.
то же самое и с функцией, имя может стоять до или после [], а тип по-прежнему - int []
источник