Qual è la differenza tra
Object foo = "something";
String bar = String.valueOf(foo);
e
Object foo = "something";
String bar = (String) foo;
Qual è la differenza tra
Object foo = "something";
String bar = String.valueOf(foo);
e
Object foo = "something";
String bar = (String) foo;
Risposte:
Il cast su una stringa funziona solo quando l'oggetto è effettivamente una stringa:
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
Non funzionerà quando l'oggetto è qualcos'altro:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()tuttavia proverà a convertire tutto ciò che gli passi in un file String. Gestisce sia primitive ( 42) che oggetti ( new Integer(42), usando quell'oggetto toString()):
String str;
str = String.valueOf(new Integer(42)); // str will hold "42"
str = String.valueOf("foo"); // str will hold "foo"
Object nullValue = null;
str = String.valueOf(nullValue); // str will hold "null"
Nota soprattutto l'ultimo esempio: il passaggio nulla String.valueOf()restituirà la stringa "null".
String.valueOf()e obj.toString()? (Il primo che mi viene in mente è che obj.toString(), attraverso un'eccezione, se objè nullo.)
null. Se guardi l'implementazione di String.valueOf()nel tuo JDK vedrai che tutto ciò che fa per i riferimenti non nulli è chiamare toString().
String.valueOf()fosse più elegante di un cast. Ma se String.valueOf()fa tutto ciò che fa il casting, e altro, ci sono ragioni per cui si dovrebbe scegliere di usare un cast? Perché non è stato deprecato?
String.valueOf((Object) null)restituirà la stringa "null". Chiamarlo con un valore letterale nullchiamerà String # valueOf (char []) che in realtà genera un NPE quando si passa null.
String.valueOf(foo)invoca il metodo di foo.toString() e assegna il risultato alla barra . È null e type safe operation.
Il cast assegnerà solo foo alla barra , se i tipi corrispondono. Altrimenti, l'espressione genererà un file ClassCastException.
String.valueOf(Object)invocaObject.toString()
Entrambi generano lo stesso output in caso di String.
Casting fallisce nel caso in cui l'oggetto fornito non sia un string.
Il metodo String.valueOf viene utilizzato per ottenere la rappresentazione String del suo oggetto parametro.
(String) value esegue il cast del valore dell'oggetto su string.
È possibile utilizzare il metodo String.valueOf per ottenere la rappresentazione String di un oggetto senza preoccuparsi dei riferimenti null. Se provi a eseguire il cast di String su un riferimento null, otterrai una NullPointerException.
Il primo cioè, String.valueOfrestituisce una stringa solo se l'oggetto è un tipo rappresentabile che è un tipo valore o una stringa .. Altrimenti genera l'eccezione.
In quest'ultimo, stai eseguendo direttamente il casting che può fallire se l'oggetto non è una stringa.
Esempio in linea.
in String.valueOf (); string as work typecasting tutti gli argomenti passati nel metodo valueof () convert in String e proprio come integer.string () converti solo integer in string