Multiple inheritance - библиотека для реализации множественного наследования в вашем коде
Имеет в себе аннотацию, указывающую, от каких классов следует отнаследоваться
@MultipleInheritance(classes = {B.class, C.class, D.class})
public class A extends AIntermediary {
public int whatever(int a) {
System.out.println("A says " + a);
return super.whatever(a + 1);
}
}
Предположим есть классы A и B с методом whatever()
public class A {
public void whatever() {
System.out.println("It's A");
}
}
public class B {
public void whatever() {
System.out.println("It's B");
}
}
Вы хотите написать класс С, который будет наследоваться от этих двух классов
Для этого над классами нужно указать аннотацию @MultipleInheritance()
для родителей и потомка
@MultipleInheritance
public class A {
public void whatever() {
System.out.println("It's A");
}
}
@MultipleInheritance
public class B {
public void whatever() {
System.out.println("It's B");
}
}
@MultipleInheritance(classes = {A.class, B.class})
public class С {
public void whatever() {
System.out.println("It's C");
}
}
После запуска mvn clean compile
cгенерируются классы:
- AIntermediary
- BIntermediary
- CIntermediary
Для каждого класса пропишите наследование от соответствующего ему "класса-прослойки" и вызов метода super()
@MultipleInheritance
public class A extends AIntermediary {
public void whatever() {
System.out.println("It's A");
super().whatever();
}
}
@MultipleInheritance
public class B extends BIntermediary {
public void whatever() {
System.out.println("It's B");
super().whatever();
}
}
@MultipleInheritance(classes = {A.class, B.class})
public class С extends CIntermediary {
public void whatever() {
System.out.println("It's C");
super().whatever();
}
}
- Java 17
Отклонируйте репозиторий multiple-inheritance:
git clone https://github.com/miqqra/MultipleInheritance.git
В склонированном проекте запустите
mvn package
Пример pom.xml
с зависимостью multiple-inheritance
...
<properties>
<multiple-inheritance.version>1.0.0</multiple-inheritance.version>
</properties>
...
<dependencies>
<dependency>
<groupId>com.squareup</groupId>
<artifactId>javapoet</artifactId>
<version>1.13.0</version>
</dependency>
<dependency>
<groupId>ru.miqqra</groupId>
<artifactId>multiple-inheritance</artifactId>
<version>${multiple-inheritance.version}</version>
<systemPath>
${basedir}/../MultipleInheritance/multiple-inheritance/target/multiple-inheritance-1.0.0.jar
</systemPath>
</dependency>
...
</dependencies>
...
Пример build.gradle
с зависимостью multiple-inheritance
dependencies {
implementation 'com.squareup:javapoet:1.13.0'
implementation files('/../MultipleInheritance/multiple-inheritance/target/multiple-inheritance-1.0.0.jar')
...
}
...
Если вы используете Intellij, можете добавить конфигурацию сборки проекта
- Нажмите на main и выберите
Edit configuration
- Во вкладке
Modify options
выберитеAdd before launh task
- Нажмите плюсик
Add task
- Выберите
Run maven goal
- В новой цели пропишите
clean
- Поменяйте местами стадию
Build
иRun maven goal