Wat is een redelijke volgorde van Java-modifiers (abstract, definitief, openbaar, statisch, enz.)?

Wat is een redelijke volgorde van Java-modifiers?

  • samenvatting
  • finale
  • inheems
  • privé
  • beschermd
  • openbaar
  • statisch
  • strictfp
  • gesynchroniseerd
  • van voorbijgaande aard
  • vluchtig

Bijwerken

Ik heb de formulering gewijzigd van aanbevolenin redelijkom de discussies te kalmeren of de bestelling wordt aanbevolen of niet.


Antwoord 1, autoriteit 100%

De gebruikelijkegebruiksvolgorde van de modifiers wordt vermeld in de Java-taalspecificatie(en niet de Java Virtual Machine-specificatie), bijv. voor klasse-modifiersvindt u de volgende definitie (uittreksel):

ClassModifiers:
    ClassModifier
    ClassModifiers ClassModifier
ClassModifier: one of
    Annotation public protected private
    abstract static final strictfp

[….]

Als er twee of meer (verschillende) class modifiers voorkomen in een class-declaratie, dan is het gebruikelijk, maar niet verplicht, dat ze verschijnen in de volgorde die overeenkomt met die hierboven getoond in de productie voor ClassModifier. (kleine tekst onderaan de alinea!)

Je vindt deze zin op verschillende andere plaatsen waar het gebruik van modifiers is gespecificeerd, b.v. hiervoor veld modificaties.

Update: ik heb “opgegeven/aanbevolen” vervangen door “gebruikelijk” om dit een acceptabel antwoord te maken. Houd hier rekening mee als je de opmerkingen leest 😉 (bedankt @EJP om dit duidelijk te maken) – Toch ikzou aanbevelenom de gebruikelijkebestellen.

Google raadt ook aande gebruikelijke volgorde te gebruiken vermeld in de Java-specificatie.

public / protected / private 
abstract 
static 
final 
transient 
volatile 
synchronized 
native 
strictfp

Update: er is een nieuwe “Java Style Guidelines“-initiatief voor projecten in de OpenJDK-gemeenschap. Het heeft ook een aanbeveling voor een modificatiebestellingen bevat ook de nieuwe standaardmodifier van Java 8.

public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp

Antwoord 2, autoriteit 21%

Het is redelijk om de volgorde te gebruiken volgens de Specificatie van Java Virtual Machine, Tabel 4.4

  • openbaar
  • beschermd
  • privé
  • samenvatting
  • standaard
  • statisch
  • finale
  • van voorbijgaande aard
  • vluchtig
  • gesynchroniseerd
  • inheems
  • strictfp

Antwoord 3, autoriteit 5%

Op basis van hun int-waarden.

Modificatie (Java Platform SE 8)

  • 1 : openbaar
  • 2 : privé
  • 4 : beveiligd
  • 8 : statisch
  • 16 : finale
  • 32 : gesynchroniseerd
  • 64 : vluchtig
  • 128 : voorbijgaand
  • 256 : native
  • 512: interface
  • 1024 : samenvatting
  • 2048: strictfp

Antwoord 4

Ik gebruik twee regels om de volgorde van de modificaties te onthouden, maar bevat niet de strictfp, omdat deze nooit door mij wordt gebruikt. Ter info.

  1. gesynchroniseerde native hebben mensen met de minste prioriteit.

  2. PPP AS FTV: PPP {noise sound} AS {watching} FTV {France TV}.

🙂

Other episodes