---
title: 'Warum Properties extends Hashtable<Object, Object> und nicht Hashtable<String, String>?'
url: 'https://tutego.de/blog/javainsel/2018/03/warum-properties-extends-hashtable-und-nicht-hashtable'
markdown: 'https://tutego.de/blog/javainsel/2018/03/warum-properties-extends-hashtable-und-nicht-hashtable.md'
date: '2018-03-03'
description: 'Von der Intuition her ist von der Vererbung class Properties extends Hashtable<String, String> naheliegend, doch hat Sun nicht gewollt. Der Grund hat gar nicht so sehr mit Properties selbst zu tun, sondern mit der Basisklasse Hashtable und gewählten Umsetzung der Generics und der gewünschten …'
taxonomy:
  category:
    - Insel
---

# Warum Properties extends Hashtable<Object, Object> und nicht Hashtable<String, String>?

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Warum Properties extends Hashtable<Object, Object> und nicht Hashtable<String, String>?

03.03.2018 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Von der Intuition her ist von der Vererbung class `Properties` extends Hashtable<`String`, `String`> naheliegend, doch hat Sun nicht gewollt. Der Grund hat gar nicht so sehr mit `Properties` selbst zu tun, sondern mit der Basisklasse Hashtable und gewählten Umsetzung der Generics und der gewünschten Kompatibilität. Von Java 1.0 bis Java 1.4 hat die Klasse Hashtable eine Methode `put(Object, Object)`. Ab Java 5 wird `Object` durch generische Typparameter ersetzt, sodass es in Hashtable heißt: `put(K, V)`. Wenn nun `Properties` extends Hashtable<`String`,`String`> ist, dann wird die Hinzufügemethode zu `put(String, Sting)`. Das wäre nicht mehr kompatibel zu `put(Object, Object)` vor Java 5. Also haben die Sun-Entwickler `Properties` extends Hashtable<`Object`, `Object`> geschrieben, auch wenn die `put(…)`-Methode überhaupt nicht verwendet werden soll, sondern `setProperty(…)`. Da Generics nur ein „Trick“ des Compilers sind, lässt sich über den Raw-Typ tricksen:

```java
Properties props = new Properties();

@SuppressWarnings( {"rawtypes", "unchecked"} )

Map map = (Map) props;
```

Kategorien: [Insel](https://tutego.de/blog/javainsel/category/insel/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Spring Boot 2.0 freigegeben](https://tutego.de/blog/javainsel/2018/03/spring-boot-2-0-freigegeben.md)
- Next: [CompletionService und ExecutorCompletionService](https://tutego.de/blog/javainsel/2018/03/completionservice-und-executorcompletionservice.md)
