tôi tạo enums tôi qua phản ánh, cho rằng tôi thêm vào mỗi enum một lớp bên trong mà thực hiện các trừu tượng nhà máy. Bây giờ tôi muốn truy cập vào lớp bên trong này để gọi phương pháp:Annotate lớp với lớp bên trong
@Factory(FooFactory.class)
public enum Foo {
FOO, BAR;
public class FooFactory implements AbstractFactory<Foo> {
public Foo create(String value) {
return valueOf(value.toUpperCase());
}
}
}
Định nghĩa của @Factory
là:
@Retention(RetentionPolicy.RUNTIME)
public @interface Factory {
Class<?> value();
}
Với điều này, tuy nhiên, tôi nhận được lỗi sau:
Không thể giải quyết lớp học thành loại FooFactory.java
Khi tôi cố gắng @Factory(Foo$FooFactory.class)
tôi nhận được lỗi :
Các lồng nhau Foo $ FooFactory không thể referneced sử dụng tên nhị phân của nó.
Vì vậy, thậm chí có thể tham chiếu một lớp lồng nhau không?
Tôi nghi ngờ FooFactory cần phải là 'lớp tĩnh công cộng'. – Charlie
@Charlie Tôi đã thử điều đó rồi. –
enums thường dành cho các giá trị cố định, đã biết. Điều này có vẻ kỳ lạ. –