Saya memiliki ini di kode saya
Thread.currentThread().sleep(x);
Eclipse memberi tahu saya untuk menggunakan statis
Thread.sleep(x);
sebaliknya, mengapa? Apa bedanya, apakah ada perbedaan dalam fungsi sama sekali antara 2 metode ini?
Saya memiliki ini di kode saya
Thread.currentThread().sleep(x);
Eclipse memberi tahu saya untuk menggunakan statis
Thread.sleep(x);
sebaliknya, mengapa? Apa bedanya, apakah ada perbedaan dalam fungsi sama sekali antara 2 metode ini?
Jawaban:
Hanya ada satu metode, bukan dua, dan itu statis. Meskipun Anda dapat memanggil metode statis melalui referensi instance, itu bukan gaya yang baik. Ini menunjukkan programmer mengira dia memanggil metode instance. Seorang programmer yang bingung mungkin berpikir dia dapat menyebabkan thread lain (bukan yang sekarang) untuk tidur seperti ini, padahal bukan itu yang dilakukannya.
Kedua baris kode Anda melakukan hal yang sama tetapi yang kedua adalah gaya yang lebih baik.
Di Java, tidur adalah metode statis. Kedua contoh Anda melakukan hal yang persis sama, tetapi versi sebelumnya membingungkan karena tampaknya memanggil metode pada objek tertentu tetapi tidak melakukan itu sama sekali. Dalam contoh Anda, itu tidak terlalu penting, tetapi akan lebih berbahaya jika Anda memiliki yang berikut:
someOtherThread.sleep(x);
Kali ini sepertinya Anda memberi tahu utas lain untuk tertidur, tetapi sebenarnya Anda sedang menyetel utas saat ini ke mode tidur. Cara untuk menghindari membuat jenis kesalahan ini adalah dengan selalu memanggil metode statis menggunakan kelas daripada objek tertentu.
Kedua panggilan metode memiliki perilaku yang identik karena mereka memanggil metode yang sama tetapi menggunakan nama kelas ( Thread dalam kasus ini) daripada contoh untuk mengakses bidang statis dan metode membuat statis-ness ini jelas. Itulah mengapa peringatan ini dibuat.
Tetapi mengingat bahwa bidang dan metode statis ditampilkan dengan cara tertentu di sebagian besar IDE (misalnya dalam font miring di Eclipse dan IntelliJ IDEA), apakah peringatan ini masih diperlukan? Mungkin tidak seperlunya seperti di masa-masa awal Java, editor sederhana digunakan.
Thread.currentThread().sleep(x);
atau cara Eclipse mengatakan bahwa Thread.sleep(x);
konteks statis diperlukan jika diperlukan, jadi kami tunggu sebentar saat tidur ini.
Paradigma statis yang ditetapkan oleh satu objek, hanya mempengaruhi siklus hidup cetak tumpukan objek tertentu, sekali lagi mengingat keseluruhan Siklus Hidup Objek statis tidak terlalu mengganggu, jika diperlukan dapat digunakan untuk memudahkan pengkodean, tetapi harus dilakukan dengan hati-hati sebagai kaki statis- print dirujuk oleh Class
(misalnya: - Class.forName(pkg.className)
) sesuai namanya dan bukan oleh apa pun object
yang merupakan salinan cetak tunggal Kelas dalam HEAP
memori.
Sekali lagi penggunaan objek juga memiliki pro & kontra oleh referensi jenis Lemah, Hantu, Kuat ....,
Kode Berbelit-belit oleh Alam. Ini hanyalah cara yang kami lakukan untuk membuatnya berfungsi & berfungsi.