2015-11-16 3 views
3

Может ли кто-нибудь объяснить, что означает Map<String, Serializable>? Я понимаю, что у Карты должны быть пары с ключом, и я привык видеть <String, String><Integer, whatever>, но я никогда не видел, чтобы значение имело тип Serializable. Я также понимаю, что Serializable - это процесс записи объекта в байты на диске/сети. Но как это все складывается, когда мы используем Map<String, Serializable>? к чему это сводится?Что означает карта <String, Serializable>?

Могу ли я поместить любой объект в значение типа Serializable или это должен быть какой-то специальный объект или что-то еще? Может ли кто-то пролить свет?

+0

Ваш вопрос озадачен. Вы знаете, что такое java-интерфейс? –

+0

Это просто «Карта» из клавиш «String» для значений, реализующих интерфейс «Serializable». – Andreas

+1

Это не очень хороший вопрос. Можете ли вы визуализировать карту типа «Карта », скажем, все синонимы определенного слова? 'Map, String, Serializable>' ничем не отличается. И 'List', и' Serializable' являются интерфейсами – vsnyc

ответ

13

Я также понимаю, что Serializable - это процесс записи объекта в байты на диске/сети. Но как это все складывается, когда мы используем Map<String, Serializable>?

Serializable является Java Интерфейс:

ОТ API:

  • Сериализуемость класса включается классом, реализующим интерфейс java.io.Serializable.
  • Классы, которые не реализуют этот интерфейс, не будут иметь своего состояния, сериализованного или десериализованного.
  • Интерфейс сериализации не имеет методов или полей и служит только для идентификации семантики сериализации.

Могу ли я поместить любой объект в значение типа Serializable или он должен быть какой-то особый объект или что-то еще?

  • Все подтипы сериализуемой класса сами сериализации.

Может кто-нибудь объяснить, что это значит Map<String, Serializable>?

Это означает, что вы будете иметь String ключ и значение, которое должно быть объектом реализации Serializable.

Например:

// valid object for the map 
class Bar implements Serializable { 
    private static final long serialVersionUID = 1L; 

    // class stuff 
} 

// not a candidate 
class Foo { 
    // class stuff 
} 

Тогда:

Map<String, Serializable> myMap = new HashMap<String, Serializable>(); 
Bar bar = new Bar(); 
map.put("BAR", bar); // this is ok 
Foo foo = new Foo(); 
map.put("FOO", foo); 
// The method put(String, Serializable) in the type HashMap<String,Serializable> 
// is not applicable for the arguments (String, Foo) 
+1

Спасибо! – JavaFan

1

Строка является ключом, Сериализуемый это значение. Это объект, который можно сериализовать и транспортировать по всему кластеру (используя данный SerDe).

1

Serializable - это интерфейс.

Что это означает, что значения карты являются классами, которые реализуют Serializable интерфейс

Это также означает, что статический тип из obgect возвращенного Get() метод будет сериализацией

0

Карта вещь, называемая классом шаблона (или общим типом, используемым в Java), см. this. Класс Map принимает 2 класса в своем шаблоне, который может быть любым, если они соответствуют некоторым perquisites. Здесь Key - это просто String, а Value - класс, который реализует Serializable. Класс карты не был бы очень динамичным, если бы он поддерживал только классы (базового) класса String.

Смежные вопросы