Son statik ve statik final arasındaki fark


151

Kodu olduğu gibi bir kod buldum

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";

Aralarındaki fark nedir veya aynı mıdır? Ya da için farklılık gösteriyor privateveya public?


149
Eğer farklılarsa, java'dan tamamen vazgeçerim.
Alex Lockwood

Yanıtlar:


226

Hiç fark yok. Göre Sınıflar - - 8.3.1 Java Dil Şartname Saha Değiştiricileri ,

Bir alan bildiriminde iki veya daha fazla (farklı) alan değiştirici görünürse, zorunlu olmasa da, yukarıda FieldModifier üretiminde gösterilenle tutarlı bir şekilde görünmeleri gelenekseldir.

Alanlar için, söz konusu üretim değiştiricileri bu sırayla listeler:

@Annotation public protected private static final transient volatile

Ve yöntemler için:

@Annotation public protected private abstract static final synchronized native strictfp


9
Referans için, bağlantıdan sipariş abstract static final.
sfarbota

42

Onlar aynı. Değiştiricilerin sırası önemli değildir. Ve aynı kuralın herkes için geçerli olduğunu unutmayın. , Java'da değiştiricilerin kullanıldığı bağlamlarda .

Bununla birlikte, çoğu Java stil kılavuzu, değiştiriciler için aynı siparişi önerir / zorunlu kılar. Bu durumda, öyle public static final.


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";

yukarıdakilerin hepsi aynı olsa bile, ilk üçün konumu birbirine bağlıdır.


8

Aynılar,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4

Aralarındaki fark nedir veya aynı mıdır?

Statik ve final sırasını değiştirmekten bahsediyorsanız, evet aynıdır.

özel veya kamu için farklı mı?

Hayır, herhangi bir siparişi özel ve genel olarak kullanabilirsiniz. Tek fark, özel değişkenlerin sınıf dışında doğrudan erişilemeyeceğidir.


1

Bu sadece kodlama stilini tutarlı tutmak için insanların izlediği bir sözleşmedir. Okunabilirliği artırır. bunu yazmanın tercih edilen yolu

private static final <Type> <variable_name> = <value>;

0

Tabii ki aynı. sadece alışkanlıklarınıza ve tercihinize bağlıdır :-). Üyeler ve yöntemler için genel statik son siparişi de kullanıyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.