Perbedaan antara final statis dan final statis

151

Saya menemukan kode tempat kode itu menyatakan suka

private final static String API_RTN_SUCCESS = "0";
private final static String API_RTN_ERROR = "1";

public static final String SHARED_PREFERENCE_CONFIG = "shared_preference_config";
public static final String STARTUP_SETTING_KEY = "startup_setting";

Apa perbedaan di antara mereka atau apakah mereka sama? Atau apakah itu berbeda untuk privateatau public?

MBMJ
sumber
149
Jika mereka berbeda, maka saya menyerah di java sepenuhnya.
Alex Lockwood

Jawaban:

226

Tidak ada perbedaan sama sekali. Menurut 8.3.1 - Kelas - Field Modifiers dari Spesifikasi Bahasa Jawa ,

Jika dua atau lebih pengubah bidang (berbeda) muncul dalam deklarasi lapangan, biasanya, meskipun tidak diharuskan, mereka muncul dalam urutan yang konsisten dengan yang ditunjukkan di atas dalam produksi untuk FieldModifier.

Untuk bidang, produksi tersebut mencantumkan pengubah dalam urutan ini:

@Annotation public protected private static final transient volatile

Dan untuk metode:

@Annotation public protected private abstract static final synchronized native strictfp

Gergely Szilagyi
sumber
9
Untuk referensi, urutan dari tautan adalah abstract static final.
sfarbota
42

Mereka sama. Urutan pengubah tidak signifikan. Dan perhatikan bahwa aturan yang sama berlaku di semua konteks di mana pengubah digunakan di Jawa.

Namun, sebagian besar panduan gaya Java merekomendasikan / mengamanatkan urutan spesifik yang sama untuk pengubah. Dalam hal ini, ya public static final.

Stephen C
sumber
19
private static final String API_RTN_ERROR= "1";
private final static String API_RTN_ERROR= "1";
static private final String API_RTN_ERROR= "1";
static final private String API_RTN_ERROR= "1";
final static private String API_RTN_ERROR= "1";
final private static String API_RTN_ERROR= "1";

bahkan semua yang di atas sama dengan posisi tiga pertama saling bergantian.

RTA
sumber
8

Mereka sama,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";
Jigar Joshi
sumber
4

Apa perbedaan di antara mereka atau apakah mereka sama?

Jika Anda berbicara tentang mengubah urutan statis dan final, maka ya mereka sama.

apakah itu berbeda untuk pribadi atau publik?

Tidak, Anda dapat menggunakan pesanan apa pun secara pribadi dan publik. Perbedaannya adalah variabel pribadi tidak akan dapat diakses di luar kelas secara langsung.

Harry Joy
sumber
1

Ini hanya sebuah konvensi atau praktik yang diikuti orang untuk menjaga gaya pengkodean tetap konsisten. Ini meningkatkan keterbacaan. sangat disukai cara penulisan ini

private static final <Type> <variable_name> = <value>;
Vishal Akkalkote
sumber
0

sama saja, tentu saja. itu hanya tergantung pada kebiasaan dan preferensi Anda :-). Saya menggunakan perintah final statis publik untuk anggota dan metode juga

pietroSV
sumber