Berikut adalah beberapa alasan, yang mungkin lebih atau kurang menarik bagi Anda, tergantung pada preferensi Anda sendiri:
Jangan hanya mengabaikannya karena menjadi "gula sintaksis". Meskipun Anda mungkin mengatakan bahwa sesuatu itu hanya gula sintaksis, bagaimanapun juga gulalah yang mempermanis hidup Anda - sebagai seorang programmer seperti halnya seorang peminum kopi atau teh.
Lajang - setiap Scala object
secara inheren adalah lajang. Menimbang bahwa di dunia Jawa orang menerapkan lajang dalam segala cara yang berbeda dan lebih sering berakhir dengan membuat kesalahan dalam penerapannya, Anda tidak dapat membuat kesalahan sesederhana itu di Scala. Menulis object
alih-alih class
menjadikannya singleton dan Anda sudah selesai.
Akses ke metode statis: Metode statis di Jawa dapat diakses dari objek. Misalnya, Anda memiliki kelas C
dengan metode statis f
dan objek c
tipe C
. Maka Anda harus memanggil C.f
, tetapi Java memungkinkan Anda (meskipun dengan peringatan) untuk digunakan c.f
, yang ketika Anda berasal dari latar belakang Scala tidak benar-benar masuk akal, karena objek tidak memiliki metode yang f
benar-benar.
Hapus pemisahan: Di Jawa Anda dapat mencampur atribut dan metode statis dan non-statis dalam sebuah kelas. Jika Anda bekerja dengan disiplin, ini tidak menjadi masalah, namun, jika Anda (atau orang lain dalam hal ini) tidak, maka Anda berakhir dengan bagian statis dan non-statis yang disatukan dan sulit untuk mengetahui dengan cepat apa yang statis dan apa yang tidak. Di Scala, segala sesuatu yang terletak di dalam objek pendamping jelas bukan bagian dari objek runtime kelas terkait, tetapi tersedia dari konteks statis. Begitu juga sebaliknya, jika ditulis di dalam kelas, itu tersedia untuk instance dari kelas itu, tetapi tidak dari konteks statis. Ini menjadi sangat memberatkan di Jawa, setelah Anda mulai menambahkan blok penginisialisasi statis dan non-statis ke kelas Anda. Ini bisa menjadi sangat sulit untuk dipahami dalam hal urutan eksekusi dinamis.
Lebih sedikit kode: Anda tidak perlu menambahkan kata statis ke setiap dan setiap atribut atau metode dalam object
, sehingga menjaga kode lebih ringkas (memang, bukan keunggulan yang menonjol).
Kerugiannya jauh lebih sulit ditemukan. Orang mungkin berpendapat, bahwa bagian statis dan non-statis harus dimiliki bersama, tetapi dipisahkan oleh konsep Scala objek pendamping. Sebagai contoh, mungkin tampak aneh memiliki diagram kelas, tetapi kemudian harus membuat dua hal dalam kode dan membedah atribut mana yang berjalan.