директива using в Java - PullRequest
       24

директива using в Java

6 голосов
/ 10 марта 2010

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

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

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

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

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

Ответы [ 4 ]

8 голосов
/ 10 марта 2010

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

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

....

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

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

import static java.util.Arrays.asList;

...

System.out.println(asList(1, 2, 3));
2 голосов
/ 10 марта 2010

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

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

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

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

class MyMap extends HashMap<String, String> {}

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

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

0 голосов
/ 10 марта 2010

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

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

0 голосов
/ 10 марта 2010

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

...