3
我有一個特別的情況,我想創建一個可以接受「基地」註釋作爲它的一個參數的註釋:文摘Java註解
public @interface Fleet
{
int fleetSize();
Vehicle fleetType();
}
凡@Vehicle
是「基地」標註爲不同這對他們來說是有意義的車輛,將接受不同的參數類型:
public @interface Vehicle {}
public @interface Car extends Vehicle {
boolean is2WheelDrive();
}
public @interface Motorcycle extends Vehicle {
String manufacturer();
}
從而使@Fleet
附註可用於像這樣:
// A fleet of 20 Hyabusas
@Fleet(20, @Motorcycle("Hyabusas"))
public void doSomething() {
// ...
}
// A fleet of 5 4-Wheel-drive cars
@Fleet(5, @Car(false))
public void doSomethingElse() {
// ...
}
現在,首先,幾件事:是的,我知道這個例子說明了一個可怕的設計!我知道你不能用Java擴展註釋。
鑑於這兩種已知的罪惡,我怎麼可能,反正重構的代碼片段,這樣下面的滿足約束條件:
- 的
@Fleet
註釋可以傳遞一個@Car
或@Motorcycle
@Car
和@Motorcycle
接受不同的(數量和類型)論據
在此先感謝!