# Object -> String mit valueOf, toString oder cast ?



## alphaChill (1. Apr 2010)

Hallo,

ich würde gern aus einem Object ein String machen, mit welcher Methode mache ich das am effektivsten?


```
String s1 = "Hallo";
	  String s2 = "Welt";
	  String s3 = "raum";
	  
	  Object[] oa = new Object[3];
	  oa[0] = s1;
	  oa[1] = s2;
	  oa[2] = s3;
	  
	  String e1 = String.valueOf(oa[0]);
	  String e2 = oa[1].toString();
	  String e3 = (String) oa[2];
	  
	  System.out.println(e1 + " " + e2+e3);
```


----------



## Sonecc (1. Apr 2010)

```
String.valueOf(obj);
```
 ist nichts anderes wie (siehe SourceCode von String) 
	
	
	
	





```
obj.toString()
```

Folgendes... 

```
(String) obj
```
 ... kann zu einer Exception führen..

Würde daher zu obj.toString() tendieren


----------



## alphaChill (1. Apr 2010)

Alles klar, vielen Dank, dass du so schnell geantwortet hast!


----------



## bygones (1. Apr 2010)

Sonecc hat gesagt.:


> ```
> String.valueOf(obj);
> ```
> ist nichts anderes wie (siehe SourceCode von String)
> ...


das ist nicht ganz richtig.

[c]obj.toString();[/c] ist eine moegliche NullPointerException
[c]String.valueOf(obj);[/c] sichert einen vor der NPE

daher wuerde ich eher zu String.valueOf tendieren, wenn die Objekte von irgendwo herkommen


----------



## Sonecc (1. Apr 2010)

bygones hat insofern recht, dass String.valueof vor einer NPE schützt (indem einfach null als String übergeben wird), in seinem Beispiel existiert diese Möglichkeit jedoch nicht und ich habe (leider) vorrausgesetzt, dass eine NPE geprüft wird, bevor man das objekt benutzt (so wie es auch eigentlich sein sollte)


----------



## bygones (1. Apr 2010)

war auch nur als Ergaenzung zu deinem Kommentar gedacht


----------



## Sonecc (1. Apr 2010)

eine wichtige ergänzung


----------

