powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / batch generation of equals() and hashCode()
8 сообщений из 8, страница 1 из 1
batch generation of equals() and hashCode()
    #39298562
kadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коллеги подскажите кто знает.

у меня в проекте предусмотренна периодическая генерация классов из XSD-Схемы при помощи JAXB. Эти классы используются в тестах и принимают участия в коллекциях, что ведет к их автоматическому использованию equals() метода. В отдельных случаях я использую фишку eclipse для генерации equals() / hashCode(). Однако когда речь заходит о большом количестве классов, для которых нужно сгенерить эти методы, в ручную выполнять эту работу как-то влом.

Не встречалься ли кто-нибудь с задачей массовой генерацией этих методов ?

спасибо
...
Рейтинг: 0 / 0
batch generation of equals() and hashCode()
    #39298637
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://projectlombok.org/

Код: java
1.
2.
@EqualsAndHashCode
Equality made easy: Generates hashCode and equals implementations from the fields of your object.
...
Рейтинг: 0 / 0
batch generation of equals() and hashCode()
    #39298648
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 https://projectlombok.org/

Код: java
1.
2.
@EqualsAndHashCode
Equality made easy: Generates hashCode and equals implementations from the fields of your object.


ИМХО, Это самый убогий "фреймворк" в джаве)).
...
Рейтинг: 0 / 0
batch generation of equals() and hashCode()
    #39298681
kadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 https://projectlombok.org/

Код: java
1.
2.
@EqualsAndHashCode
Equality made easy: Generates hashCode and equals implementations from the fields of your object.



спасибо.
игрушка прикольная. Но не подойдет, потому что надо в каждый класс в ручную впихивать аннотацию @Data. К тому же тогда надо специально JAXB объяснять чтобы он включил в декларацию класса эту аннотацию. Короче тут "овчинка выделки не стоит"
...
Рейтинг: 0 / 0
batch generation of equals() and hashCode()
    #39298719
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
batch generation of equals() and hashCode()
    #39299169
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну зачем в ручную...

Самое простое написать свой мавен плагин. Котрый так же как и ломбок будет вставлять во все классы что вам нужно

Это просто идея.

У вас в руках самый мощный инструмент java... Неужели вы забыли как раньше сборку делали через Ант и писали руками билд скрипты?


Тут тоже самое .... уважение к платформе...

Укажите папку и что нужно делать с вашим кодом. И всё.


Как вариант просто создать ещё одни базовый абстрактный класс и через всю ту же рефлексию в нем определить два ваших метода в которых бежать по полям реального класса .
...
Рейтинг: 0 / 0
batch generation of equals() and hashCode()
    #39299676
detec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИМХО, сильно стрёмный момент в общем случае - доверять автоматике реализацию этих методов с обходом всех полей. В полях могут быть коллекции объектов, к примеру. Если речь идёт о приёме каких-то готовых сущностей через веб-сервис - тогда ещё куда ни шло, а если будет двунаправленный обмен сложными, вложенными объектами, то я бы делал эти методы руками.
...
Рейтинг: 0 / 0
batch generation of equals() and hashCode()
    #39323920
kadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача решилась путем использования плагина
Код: xml
1.
2.
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>



вот цитата из pom:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
		<!-- https://mvnrepository.com/artifact/org.jvnet.jaxb2_commons/jaxb2-basics-runtime -->
		<!-- in order to work with xsd->java transformation, utilize the following dependensies -->
		<dependency>
			<groupId>org.jvnet.jaxb2_commons</groupId>
			<artifactId>jaxb2-basics-runtime</artifactId>
			<version>1.11.1</version>
		</dependency>
		<dependency>
			<groupId>com.sun.xml.bind</groupId>
			<artifactId>jaxb-impl</artifactId>
			<version>2.2.11</version>
		</dependency>
		<dependency>
                       <groupId>com.sun.xml.bind</groupId>
                       <artifactId>jaxb-core</artifactId>
                       <version>2.2.11</version>
                </dependency>


Код: xml
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.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
	<build>
		<pluginManagement>
			<plugins>
				<!-- If we e.g. execute on JDK 1.7, we should compile for Java 7 to get 
					the same (or higher) JAXB API version as used during the xjc execution. -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
					</configuration>
				</plugin>
				<plugin>
					<!-- ignore m2e error for the maven-jaxb2-plugin -->
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.jvnet.jaxb2.maven2</groupId>
										<artifactId>maven-jaxb2-plugin</artifactId>
										<versionRange>[0.12.3,)</versionRange>
										<goals>
											<goal>generate</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>


		<plugins>

			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.jvnet.jaxb2.maven2</groupId>
				<artifactId>maven-jaxb2-plugin</artifactId>
				<configuration>
					<schemaDirectory>src/main/resources/data_1</schemaDirectory>
					<schemaIncludes>
						<include>*.xsd</include>
					</schemaIncludes>
					<bindingDirectory>${basedir}/src/main/resources/jxb</bindingDirectory>
					<bindingIncludes>
						<include>*.xjb</include>
					</bindingIncludes>
					<generatePackage>com.ciber.tibco.domain</generatePackage>
					<args>
						<arg>-XtoString</arg>
						<arg>-Xequals</arg>
						<arg>-XhashCode</arg>
					</args>
					<plugins>
						<plugin>
							<groupId>org.jvnet.jaxb2_commons</groupId>
							<artifactId>jaxb2-basics</artifactId>
							<version>0.6.4</version>
						</plugin>
					</plugins>
				</configuration>
				<executions>
					<execution>
						<id>generate entity classes from xsd schema</id>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>

			</plugin>
		</plugins>
	</build>
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / batch generation of equals() and hashCode()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]