cuốn sách gpt4 ai đã làm

java - máy ủi 5.3.2. Thiết lập trình chuyển đổi tùy chỉnh theo chương trình?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 04:30:51 26 4
mua khóa gpt4 Nike

Làm cách nào để lập trình thiết lập bộ chuyển đổi tùy chỉnh cho máy ủi? Đoạn mã sau không hoạt động:

Triển khai trình chuyển đổi tùy chỉnh:

class ConverterImpl mở rộng DozerConverter {

ConverterImpl() {
super(A.class, B.class);
}

@Ghi đè
public B ConvertTo(Nguồn A, đích B) {
điểm đến trở về;
}

@Ghi đè
công khai A ConvertFrom(nguồn B, đích A) {
điểm đến trở về;
}
}

Mã kiểm tra:

Trình ánh xạ DozerBeanMapper = new DozerBeanMapper();
mapper.setCustomConverters(Collections.singletonList(new ConverterImpl()));
A a = A mới();
B b = mapper.map(a, A.class);

Sau khi chạy đoạn mã trên, trình chuyển đổi tùy chỉnh không được gọi. Có chuyện gì thế?

câu trả lời hay nhất

Có vẻ như bạn thực sự phải thêm một ánh xạ cụ thể, rất tiếc là bạn chỉ có thể chỉ định trình chuyển đổi cấp trường bằng API có lập trình chứ không phải trình chuyển đổi cấp lớp. Do đó, nếu bạn gói các lớp A và B trong một lớp chứa, bạn có thể chỉ định ánh xạ cho các trường A và B.

Ví dụ: đoạn mã dài sau hoạt động như mong đợi:

lớp công khai DozerMap {

lớp tĩnh công khai ContainerA {
riêng A a;
công khai A getA() { return a }
public void setA(A a) { this.a = a }
}

lớp tĩnh công khai ContainerB {
riêng B b;
công khai B getB() { return b }
public void setB(B b) { this.b = b }
}

lớp tĩnh riêng A { };

lớp tĩnh riêng B { };

lớp tĩnh ConverterImpl mở rộng DozerConverter {

ConverterImpl() {
super(A.class, B.class);
}

@Ghi đè
public B ConvertTo(Nguồn A, đích B) {
Logger.getAnonymousLogger().info("Đã gọi");
điểm đến trở về;
}

@Ghi đè
công khai A ConvertFrom(nguồn B, đích A) {
Logger.getAnonymousLogger().info("Đã gọi");
điểm đến trở về;
}
}

public static void main(String[] args) {

Trình ánh xạ DozerBeanMapper = new DozerBeanMapper();
mapper.setCustomConverters(Collections. singletonList(new ConverterImpl()));
BeanMappingBuilder foo = new BeanMappingBuilder() {

@Ghi đè
được bảo vệ cấu hình void () {
ánh xạ(ContainerA.class, ContainerB.class).fields("a", "b", FieldsMappingOptions.customConverter(ConverterImpl.class));
}
};
mapper.setMappings(Collections.singletonList(foo));
ContainerA containerA = new ContainerA();
containerA.a = A mới();
ContainerB containerB = mapper.map(containerA, ContainerB.class);
}
}

Giới thiệu về java - máy ủi 5.3.2. Thiết lập trình chuyển đổi tùy chỉnh theo chương trình? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/10579368/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress