Мне просто интересно, есть ли в java эквивалент arrayof () / listof () / setof () / mapof (), как в kotlin? Если нет, есть ли способ работать аналогичным образом? Я обнаружил, что они сильно отличаются от java.
Кстати, сделайте intArrayOf () / arraylistof () / hashsetof () / hashmapof () и т.д., сделайте то же самое, что и int [] {} / new new ArrayList <> () / new HashSet <> () / new HashMap <> () так далее.?




В Java 9 есть аналогичные методы: List#of, Set#of, Map#of с несколькими перегруженными методами, чтобы избежать вызова метода varargs. В случае Map для varargs необходимо использовать Map#ofEntries.
До Java 9 вам приходилось использовать Arrays#asList в качестве точки входа для инициализации List и Set:
List<String> list = Arrays.asList("hello", "world");
Set<String> set = new HashSet<>(Arrays.asList("hello", "world"));
И если вы хотели, чтобы ваш Set был неизменным, вам нужно было обернуть его в неизменяемый набор из Collections#unmodifiableSet:
Set<String> set = Collections.unmodifiableSet(
new HashSet<>(Arrays.asList("hello", "world")));
Для Map вы можете использовать трюк, создав анонимный класс, расширяющий реализацию Map, а затем оберните его внутри Collections#unmodifiableMap. Пример:
Map<String, String> map = Collections.unmodifiableMap(
//since it's an anonymous class, it cannot infer the
//types from the content
new HashMap<String, String>() {{
put.("hello", "world");
}})
);
Имейте в виду, что синтаксис инициализации двойной скобки чрезвычайно опасен и может вызвать утечку памяти.
Большое спасибо, но Arrays.asList () возвращает ArrayList, возвращает ли listof () также arrayylist? Если да, то это будет дубликат arrayylistof ()
@ jerryc05 он возвращает класс с простым именем ArrayList, но это не класс java.util.ArrayList, а реализация List, которая не принимает добавление или удаление элементов.
@LuiggiMendoza omg, хорошо, я не осознавал этого, лол ... Я вижу, что они расширяют один и тот же класс, но реализуют разные классы. Спасибо
@ jerryc05 они реализуют один и тот же интерфейс, они не являются наследниками одного и того же класса, что более правильно
arrayOf(),listOf(),setOf()имеют эквиваленты (хотя и с более подробным синтаксисом, как обычно в Java). Однако есть простой эквивалент дляmapOf(), по крайней мере, не такой простой, как у Kotlin.