# Font durchgestrichen



## Dit_ (6. Apr 2011)

Hallo,
ich brauche einen Font mit dem man einen Text durchgestrichen darstellen kann, habe im Internet das hier gefunden:


```
Font font = new Font("helvetica", Font.PLAIN, 12); 
Map  attributes = font.getAttributes(); 
attributes.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON); 
Font newFont = new Font(attributes);
```

gibt es eine bessere Lösung? 
Diese funktioniert zwar, bekomme aber eine CompilerWarnung:


> Type safety: The method put(Object, Object) belongs to the raw type Map. References to generic type Map<K,V> should be parameterized



danke schon mal!


----------



## Antoras (6. Apr 2011)

Keine Ahnung ob es eine bessere Lösung gibt, aber wenn du die Warnung weg haben möchtest, dann parametrisiere die Map halt (Map<Type1, Type2>). Die Typen liefert dir 
	
	
	
	





```
getAttributes()
```
.


----------



## Dit_ (7. Apr 2011)

Antoras hat gesagt.:


> Keine Ahnung ob es eine bessere Lösung gibt, aber wenn du die Warnung weg haben möchtest, dann parametrisiere die Map halt (Map<Type1, Type2>). Die Typen liefert dir
> 
> 
> 
> ...



das ist klar, dass man das machen kann, aber die Parameter sind 
	
	
	
	





```
Map<TextAttribute, ?>
```


----------



## Antoras (7. Apr 2011)

Ja und?

Im übrigen hat bei mir 10s googlen das hier ergeben: TextAttribute: Underline and strike through : Text Layout2D Graphics GUIJava

Weit und breit sehe ich dort keine Map oder irgendwelche Parameter mit denen man sich herumärgern müsste.


----------



## Dit_ (7. Apr 2011)

Soweit ich weiss es gibt kein Objekttyp <?> in java, zumindest man kann keine Instanz

```
Map<String, ?> bla
```
 erzeugen...


----------



## Antoras (7. Apr 2011)

Das ist das Wildcard-Symbol, das steht für irgendein Objekt. Das wird benötigt wenn zur Compilezeit der Typ eines Objektes nicht bekannt ist, z.B. beim Instantiieren eines Objektes über Reflection.

```
Class<?> c = Class.forName("SomeClass"); // SomeClass zur Compilezeit nicht bekannt
```
Da das Wildcard-Symbol nicht für Object, sonder für einen unbekannten Typ steht macht 
	
	
	
	





```
new SomeClass<?>()
```
 auch keinen Sinn und geht zu Recht nicht.


----------



## SlaterB (7. Apr 2011)

wenn es bei diesem einen Attribut bleibt geht

```
Font font = new Font("helvetica", Font.PLAIN, 12);
        Map<TextAttribute, Boolean> bla = new HashMap<TextAttribute, Boolean>();
        bla.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
        Font newFont = new Font(bla);
```
sonst vielleicht Map<TextAttribute, Object>


----------

