Java >> Java tutorial >  >> Tag >> transient

Hvorfor bruge nøgleordet `forbigående` i java?

transiente variabler serialiseres aldrig i java.

Det markerer en medlemsvariabel, der ikke skal serialiseres, når den fortsættes til strømme af bytes. Når et objekt overføres gennem netværket, skal objektet 'serialiseres'. Serialisering konverterer objekttilstanden til serielle bytes. Disse bytes sendes over netværket, og objektet genskabes fra disse bytes. Medlemsvariabler markeret med java-transient-søgeordet overføres ikke, de går tabt med vilje.

se venligst hvad serialisering er.? og henviser også til dette

Eksempel

public class Foo implements Serializable
{
  private String saveMe;
  private transient String dontSaveMe;
  private transient String password;
  //...
}

I ovenstående eksempel dontSaveMe &password bliver aldrig serialiseret, da de erklæres som en transient variables .


Og en kort brugssag:
Forestil dig at afsløre en bruger - objekt via en offentlig tilgængelig webservice. Du vil helt sikkert gerne afsløre ting som kaldenavn, online - tilstand, måske e-mail eller placering. Du vil bestemt ikke afsløre den adgangskode, som brugeren bruger til at logge ind. Selvom denne adgangskode kunne være en egenskab for dit brugerobjekt, bør det ikke serialiseres, f.eks. ved serialisering af objektet til en JSON - String for den nævnte webservice.


transient søgeord antyder, at objektet ikke bør serialiseres , heller ikke vedvaret . Du kan bruge det, hvis du ikke ønsker at serialisere tunge objekter (såsom Wrapper s, som for eksempel kan indeholde en masse forretningslogik).

@Transient annotering antyder, at objektet ikke bør bevares (hvis du f.eks. har spillet med Hibernate), men det kan serialiseres .

Jeg har inkluderet anmærkningsforklaringen, fordi jeg husker, at jeg blev forvirret af de to. :-)


Java tag