Во -первых, давайте поговорим о финале.
Окончательное ключевое слово может изменять переменные, методы и классы .
Окончательная переменная:
нуждаться:
1 Нужна постоянная времени компиляции, которая никогда не меняется
2 Значение инициализировано во время выполнения, не желая менять
Преимущества: вычисления, выполненные во время компиляции, уменьшая бремя при выполнении.
Расширения:
Вы можете изменить основные типы и эталонные объекты. При изменении основного типа это означает, что значение довольно постоянно. При изменении ссылки на объект, как только ссылка инициализирована и указывает на объект, его нельзя изменить на другой объект (сам объект может быть изменен)
Пустой финал
Домен, который изменен окончательным, но не дает начального значения, должен быть назначен значение окончательному с использованием выражения в определении или конструкторе домена (окончательный должен быть инициализирован перед использованием)
Уведомление:
Если объект модифицируется статическим и окончательным одновременно (постоянная сбора компиляции), он обычно выражается в капитале, и параметры модификации слов подчеркивания ссылки:
Если окончательный параметр изменения, это означает, что параметр читабелен, но не может быть изменен.
Пример использования:
частный случайный rand = new Random (); частный статический случайный случайный random = new Random (); Частный окончательный финал int n1 = 12; частный конечный int number = rand.nextint (30); частный статический конечный int number2 = random.nextint (40); @Test public void finalDatatest () {System.out.println (n1); System.out.println ("-----------------------------------"); System.out.println (rand.nextint (30)); System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * @param sk * @return */public String finalParam (Final String SK) {// sk = "Jeyson"; Окончательный метод:
Окончательный может также изменить метод, указывая, что метод не может быть унаследован подклассами.
Преимущества использования окончательного:
1 Перед JDK1.5 эффективность была выше, и после JDK1.5 ее можно игнорировать
2 Метод блокировки, чтобы гарантировать, что значение метода в подклассе остается неизменным и не может быть перезаписано. Пример использования:
public final String finalmethod () {return "Hello World"; } Окончательный класс:
Если вы не хотите быть унаследованным каким -либо классом, вы можете использовать окончательный для изменения примера использования класса:
Public Final Class FinalClasstx {private int k; public void getmyword () {System. out .println («Это последний класс, значение k IS» +getK ()); } public int getk () {return k;} public void setk (int k) {this .k = k;}} Тогда переходное ключевое слово:
Переход может модифицировать только переменные, указывая на то, что переменная не может быть сериализована.
Как правило, мы наследуем сериализуемый класс интерфейса, и сериализация будет выполняться автоматически. Когда переменная, модифицированная переходным процессом, сериализована, она не будет сериализована на указанное место назначения.
так,
1 Переменная, модифицированная переходным процессом, больше не является частью стойкости объекта, а содержание переменной сериализуется и не может быть доступно.
2 переход может изменить только переменные, а не методы и классы
3 Пример использования статической переменной, которая не может быть сериализована независимо от того, изменяется ли она переходным процессом:
public Class TransientEx {public static void main (string [] args) {user user = new user (); user.setusername ("Jeyson"); user.setpassword ("123456"); System.out.println («Перед сериализацией:»); System.out.println ("username ="+user.getusername ()); System.out.println ("password ="+user.getPassword ()); // serialization try {objectOutputStream OS = new objectOutputStream (new FileOutputStream ("c: //myresource//test1.txt")); OS.WriteObject (пользователь); os.flush (); os.close (); } catch (Exception e) {e.printstackTrace (); } // deserialization try {objectInputStream IS = new ObjectInputStream (new FileInputStream ("c: //myresource//test1.txt")); user = (user) is.readobject (); is.close (); System.out.println ("序列化后 :"); System.out.println ("username ="+user.getusername ()); System.out.println ("password ="+user.getPassword ()); } catch (Exception e) {e.printstackTrace (); } System.out.println ("------------------------------------"); }} пользователь класса реализует serializable {private static final long serialversionuid = 1l; частное имя пользователя; // Использование переходного пароля частной переходной строки; public String getUsername () {return username; } public void setUsername (string username) {this.username = username; } public String getPassword () {return пароль; } public void setPassword (String password) {this.password = password; }} Расширение: Extremable
Класс, который реализует сериализуемый интерфейс, реализован, поэтому сериализация автоматически реализует класс, который реализует интерфейс Externaliazble. Ничто не может быть автоматически сериализовано, и не влияет ли использование переходных процессов.
Если требуется сериализация, вам необходимо вручную указать переменную, которая будет сериализована в методе записи.
Пример использования:
public class ExtrailizableEx реализует Extraizable {Private Transiet String name = "ssss"; @Override public void readexternal (ObjectInput in) бросает ioException, classnotfoundexception {name = (string) in.readobject (); } @Override public void writeExternal (objectOutput) бросает ioException {out.writeObject (name); } public String getName () {return name; } public void setName (string name) {this.name = name; } public static void main (string [] args) {exterventaizableex ex = new ExtrailizableEx (); Ex.SetName ("Jeyson"); System.out.println ("Extrabizable Serialization:"); System.out.println (ex.getName ()); // serialization try {objectOutputStream OS = new ObjectOutputStream (new FileOutputStream (new File ("c: //myresource//test2.txt"))); OS.WriteObject (Ex); os.flush (); os.close (); } catch (Exception e) {e.printstackTrace (); } // deserialization try {objectInputStream IS = new ObjectInputStream (new FileInputStream (new File ("c: //myresource//test2.txt"))); ex = (ExtrailizableEx) is.ReadObject (); is.close (); System.out.println ("Extrabizable Serialization:"); System.out.println (ex.getName ()); } catch (Exception e) {e.printstackTrace (); }}} заявление:
Большая часть финала происходит из четвертого издания "Java Programming Monds"
Справочная статья: //www.vevb.com/article/86996.htm
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.