我有一个抽象类,我应该在DTO中使用Mapalyt映射:
@Data
public abstract class Car {
private String color;
}
@Data
public class ElectricCar extends Car {
private Double batteryCapacity;
}
@Data
public class FuelCar extends Car {
private Double engineSize;
}
@Data
public class CarDto {
private String color;
private Double batteryCapacity;
private Double engineSize;
}
@Mapper
public interface CarMapper {
@Mapping( source = "batteryCapacity", target="battery")
@Mapping( source = "engineSize", target="engine")
CarDto toTarget(Car source);
}
映射器将失败,错误:错误:没有名为“电池容量”的属性。
如何使这些字段成为可选字段,以便在源类中没有退出时具有默认值?
对于这个特定的示例,新的Subclass Map
将起作用。
例如
java prettyprint-override">@Mapper
public interface CarMapper {
@SubclassMapping( target = CarDto.class, source = FuelCar.class)
@SubclassMapping( target = CarDto.class, source = ElectricCar.class)
CarDto toTarget(Car source);
}
正如您所见,无需定义特定的@Mapping
注释,因为MapStruct将在不同的目标类型之间创建隐式映射,并且属性将被隐式映射。
MapperA使用MapperB 我在中有一个方法 在清洁安装时,我得到了不明确的方法错误。 MapperB不使用任何其他映射器。
问题内容: 是否可以在不添加抽象方法的情况下定义抽象类? 问题答案: 当然。 声明一个类抽象仅意味着您不允许自己对其进行实例化。 声明方法抽象意味着子类必须提供该方法的实现。 这两个是单独的概念,尽管很明显,您不能在非抽象类中使用抽象方法。您甚至可以使用带有方法的抽象类,但绝不能相反。
问题内容: 我现在正在学习Java,并且是Abstract的一部分。我读到一个奇怪的部分,我有一个抽象类,其中不包含任何abstarct方法。 他们为什么要使用此类课程? 问题答案: 为了防止实例化该类并将其仅用作基类。子类可以使用抽象类中定义的常规方法。 例如,创建的实例没有任何意义。但是所有车辆都可以重复使用一种通用方法。
问题内容: 可以有一个 实现所有方法 的抽象类-里面没有抽象方法。 例如。: 与拥有与具体类相同的类相比,拥有这样的抽象类(如果有)有什么优势? 我能想到的是,当我将其声明为抽象时,它将不会被实例化。但是,我可以通过将其具体化并将其构造函数设为私有来达到相同的效果。 TIA。 // ================== 编辑:我能想到的另一种用途: 它可能会扩展另一个抽象类或实现一个接口,而不实现
我试图创建象棋游戏,所以我为象棋工具创建抽象类(皇后,国王,车...)我还创建了king工具来检查我的代码: 并创建game_board类: 问题是,当我尝试向矩阵添加对象时,它的show me错误:1 IntelliSense:不允许抽象类类型“King”的对象:纯虚函数“chess_tool::legal_movement”没有覆盖器 ....
问题内容: 这是我的代码,假设可以在按下按钮时更改一些文本:- 用下划线标记,它给我一个错误“类必须声明为抽象或实现抽象方法”。该代码大部分是从互联网上复制的,并且可以正常工作。可能仅是Android Studio错误。我如何使它工作? 问题答案: 必须实现该函数,否则您的类应该是抽象的,以便可以在某些子类中实现您的函数。但是在您的情况下,您犯了一个拼写错误。应该代替;