Mengapa desainer Java tidak membuat versi statis metode manipulasi string di java.lang.String
kelas? Metode berikut adalah apa yang saya rujuk, tetapi pertanyaannya dapat diperluas ke metode non-statis lainnya di kelas juga.
concat(String) substring(int, int)
replace(char, char) toLowerCase()
replace(CharSequence, CharSequence) toLowerCase(Locale)
replaceAll(String, String) toString()
replaceFirst(String, String) toUpperCase()
split(String) toUpperCase(Locale)
split(String, int) trim()
substring(int)
Hanya memiliki versi non-statis dari metode ini memaksa pemeriksaan null secara eksplisit di mana saja metode seperti itu harus dipanggil. Misalnya, hanya dengan memanggil saja example = example.trim()
akan mengarah ke NullPointerException jika String example = null
. Jadi programmer harus melakukan cek kosong boilerplate berikut:
if (example != null)
example = example.trim();
// OR:
example = (example==null) ? null : example.trim();
example = (example==null) ? null : example.substring(5);
Saya akan membayangkan akan jauh lebih nyaman jika String
memiliki versi statis dari metode ini (mungkin bahkan secara eksklusif ), yang akan menggunakan string input sebagai argumen pertama:
example = String.trim(example);
example = String.replace(example, 'a', 'b');
example = String.substring(example, 5);
Ini akan menyebabkan kode bersih yang ditulis oleh programmer yang akan secara otomatis menangani kasus nol dengan hanya mengembalikan nol, daripada memaksa programmer untuk secara eksplisit menangani kasus nol. The kembali dari nol masuk akal bagi saya karena memanipulasi nol string yang harus menghasilkan nol tali, bukan kesalahan.
Mengapa desainer Java tidak memikirkan ini ketika mereka mendesain String
kelas di Java 1 atau Java 2, atau bahkan menambahkan fungsi seperti itu di versi Java yang lebih baru?
null
adalah keadaan luar biasa dan harus ditangani secara eksplisit.
Maybe<T>
jenis, saya kira?
string name = employee?.personalData?.name
. Sama seperti jalan pintas untuk semua pengulangan ini if (employee != null)
. Pertanyaan SO terkait: stackoverflow.com/questions/1196031/…