“использование” директивы в Java

Когда имя типа является слишком длинным, в C# я могу создать псевдоним как это:

using Dict = System.Collections.Generic.Dictionary<string, string>;

И я могу использовать его как это:

Dict d = new Dict();
d.Add("key", "value");

Я могу создать псевдоним, подобный этому в Java?

6
задан Mogsdad 27 July 2015 в 16:45
поделиться

4 ответа

Вы не можете создать псевдоним, но можете импортировать пакеты ( Объявления импорта JLS 7.5 ), так что вам не нужно полностью уточнять имена классов в этом пакете.

import java.util.*;
import java.lang.reflect.Field;

....

Set<Field> s = ... // Set is in java.util

Вы также можете выполнить статический импорт ( руководство ), хотя такая практика должна быть ограничена.

import static java.util.Arrays.asList;

...

System.out.println(asList(1, 2, 3));
8
ответ дан 10 December 2019 в 02:46
поделиться

Второй трюк Юваля с подклассами. Это не имеет большого значения для производительности или семантики.

В C # Dictionary также является типом NEW; каждый экземпляр универсального типа создает новый класс во время выполнения.

-1
ответ дан 10 December 2019 в 02:46
поделиться

Краткий ответ: нет .

Однако вы можете (и должны) импортировать классы, чтобы не использовать их полное имя:

import java.lang.String
// ....
String s = "hello, world.";

Если вы должны определить псевдоним, поскольку ваш класс использует несколько -уровневые дженерики или еще много чего, вы можете использовать этот прием - определив частный класс, который расширяет класс, которому вы назначаете псевдонимы (включая дженерики), просто ради того, чтобы иметь простой в использовании дескриптор:

class MyMap extends HashMap<String, String> {}

MyMap a = new MyMap();
a.put("key", "val");

(добавление псевдонимов классов был запрошен до как расширение Java и все еще ожидает рассмотрения)

2
ответ дан 10 December 2019 в 02:46
поделиться

Нет, вы не можете сделать это в java. Здесь вам нужно импортировать пакеты, если вы не хотите импортировать пакет, вам нужно использовать полностью определенное имя класса.

0
ответ дан 10 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: