2015-05-05 16 views
6

Questo è principalmente per curiosità. Come faresti (se puoi) a creare una classe che imiti String. Non è possibile estendere String poichè è final quindi è un no go, ma puramente per il fattore interesse, ho pensato di creare un oggetto che potrebbe essere inizializzato letteralmente (String s = "string";).Classe Java che estende String (o simile)

È possibile? Se é cosi, come? Se no, perché?

+1

Nota a margine: I recentemente cre ho seguito la mia classe di wrapper attorno alla stringa; solo per avere qualcosa che funzioni bene con i test unitari (come hai capito - String è finale, quindi non puoi creare oggetti mock per String.class); ma alla fine ho deciso che il guadagno non vale la pena. – GhostCat

risposta

7

No, non è possibile introdurre i propri tipi letterali in Java. La specifica del linguaggio fornisce la sintassi per valori letterali numerici, di caratteri e stringhe, e il gioco è fatto.

Non è possibile anche aggiungere le proprie conversioni implicite da un tipo esistente con una rappresentazione letterale i propri tipi personalizzati (come si può in C# - come esempio di un "parente stretto). A Java

3

String è finale, per motivi di sicurezza.

Tuttavia, come di Java 1.4, String è stato un implementazione dell'interfaccia CharSequence. Se si scrive il codice in termini di CharSequences, si sarà in grado di farlo funzionare contro qualsiasi implementazione di tale interfaccia, Stringa inclusa

Problemi correlati