Содержание
Как вы знаете, в Java класс обеспечивает план для objects ; Вы создаете объект из класса .
Существует четыре различных способа создания объектов в Java:
Метод-1
С помощью new keyword , Это наиболее распространенный способ создания объекта в Java. Почти 99% of objects созданы таким образом.
|
1
|
CrunchifyObj объект знак равно новый CrunchifyObj ( ) ;
|
Метод-2
С помощью Class.forName() , Class.forName () дает вам объект класса, который полезен для отражения .
Методы этого объекта определены Java, а не программистом, пишущим класс. Они одинаковы для всех классов.
Вызов newInstance () для этого дает вам экземпляр этого класса (т.е. Class.forName("ExampleClass").newInstance() это эквивалентно звонку new ExampleClass() ), в котором вы можете вызывать методы, определенные классом, получать доступ к видимым полям и т. д.
|
1
|
CrunchifyObj object2 знак равно ( CrunchifyObj ) Класс. forName ( crunchify.com.tutorial.CrunchifyObj ) . newInstance ( ) ;
|
Class.forName() всегда будет использовать ClassLoader вызывающей стороны, тогда как ClassLoader.loadClass () может указывать другой ClassLoader.
Я считаю, что Class.forName инициализирует загруженный класс, а ClassLoader.loadClass() подход не делает это сразу (он не инициализируется, пока не будет использован в первый раз ).
Другой должен прочитать:
Метод-3
С помощью clone() , С помощью clone () можно создать копию существующего объекта.
|
1
2
|
CrunchifyObj secondObject знак равно новый CrunchifyObj ( ) ;
CrunchifyObj object3 знак равно ( CrunchifyObj ) secondObject . клон ( ) ;
|
Метод-4
С помощью newInstance() метод
|
1
|
объект object4 знак равно CrunchifyObj . класс. getClassLoader ( ) . loadClass ( crunchify.com.tutorial.CrunchifyObj ) . newInstance ( ) ;
|
Метод-5
Использование объекта Deserialization , Десериализация объекта — это не что иное, как создание объекта из его сериализованной формы.
|
1
2
3
4
5
6
7
8
9
10
11
12
|
// Создать Object5
// создаем новый файл с ObjectOutputStream
FileOutputStream out знак равно новый FileOutputStream ( crunchify.txt ) ;
ObjectOutputStream oout знак равно новый ObjectOutputStream ( out ) ;
// записать что-то в файл
oout. writeObject ( object3 ) ;
oout. flush ( ) ;
// создаем ObjectInputStream для файла, который мы создали ранее
ObjectInputStream ois знак равно новый ObjectInputStream ( новый FileInputStream ( crunchify.txt ) ) ;
CrunchifyObj object5 знак равно ( CrunchifyObj ) OIS. readObject ( ) ;
|
Метод-6
используйте класс Constructor из java.lang.reflect
|
1
2
3
|
Учебный класс clazz знак равно CrunchifyObj . класс ;
Конструктор crunchifyCon знак равно клац . getDeclaredConstructors ( ) [ 0 ] ;
CrunchifyObj obj знак равно ( CrunchifyObj ) crunchifyCon . newInstance ( ) ;
|
Полный пример:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
пакет crunchify. ком . учебник ;
Импортировать Java. Ио. FileInputStream ;
Импортировать Java. Ио. FileOutputStream ;
Импортировать Java. Ио. ObjectInputStream ;
Импортировать Java. Ио. ObjectOutputStream ;
Импортировать Java. Ио. Сериализуемый ;
Импортировать Java. яз. отражать. Конструктор ;
/ **
* @author Crunchify.com
* Всего 6 разных способов создания объекта на Java
* /
общественности учебный класс CrunchifyObj реализует Клонируемый , Сериализуемый {
частный статический окончательный долго serialVersionUID знак равно 1л ;
общественности CrunchifyObj ( ) {
log ( Hello! CrunchifyObj () только что создан .. ) ;
}
@Override
защищенный объект клон ( ) бросает CloneNotSupportedException {
вернуть ( CrunchifyObj ) супер. клон ( ) ;
}
@SuppressWarnings ( { неиспользованный , ресурс , rawtypes } )
общественности статический недействительным main ( Строка [ ] аргументы ) бросает исключение {
// Создать Object1
CrunchifyObj object1 знак равно новый CrunchifyObj ( ) ;
// Создать Object2
CrunchifyObj object2 знак равно ( CrunchifyObj ) Класс. forName ( crunchify.com.tutorial.CrunchifyObj ) . newInstance ( ) ;
// Создать Object3
CrunchifyObj secondObject знак равно новый CrunchifyObj ( ) ;
CrunchifyObj object3 знак равно ( CrunchifyObj ) secondObject . клон ( ) ;
// Создать Object4
объект object4 знак равно CrunchifyObj . класс. getClassLoader ( ) . loadClass ( crunchify.com.tutorial.CrunchifyObj )
, newInstance ( ) ;
// Создать Object5: Создать новый файл с ObjectOutputStream
FileOutputStream out знак равно новый FileOutputStream ( crunchify.txt ) ;
ObjectOutputStream oout знак равно новый ObjectOutputStream ( out ) ;
oout. writeObject ( object4 ) ; // записать object4 в файл
oout. flush ( ) ;
// создаем ObjectInputStream для файла, который мы создали ранее
ObjectInputStream ois знак равно новый ObjectInputStream ( новый FileInputStream ( crunchify.txt ) ) ;
CrunchifyObj object5 знак равно ( CrunchifyObj ) OIS. readObject ( ) ;
log ( object5 . toString ( ) ) ;
// Создать Object6: использовать класс Constructor из java.lang.reflect
Учебный класс clazz знак равно CrunchifyObj . класс ;
Конструктор crunchifyCon знак равно клац . getDeclaredConstructors ( ) [ 0 ] ;
CrunchifyObj obj знак равно ( CrunchifyObj ) crunchifyCon . newInstance ( ) ;
}
частный статический недействительным log ( Строка объект ) {
Система. вне. println ( объект ) ;
}
}
|
Консольный вывод:
|
1
2
3
4
5
6
|
Привет ! CrunchifyObj ( ) только что создан . ,
Привет ! CrunchifyObj ( ) только что создан . ,
Привет ! CrunchifyObj ( ) только что создан . ,
Привет ! CrunchifyObj ( ) только что создан . ,
crunchify. ком . учебник . CrunchifyObj @ 45ee12a7
Привет ! CrunchifyObj ( ) только что создан . ,
|
Кроме того, попробуйте открыть crunchify.txt файл, и вы должны увидеть сериализованный объект в этом файле.
0.00 (0%) 0 votes









