0
當我嘗試編譯我的代碼使用Maven我收到以下錯誤:的java:在類的構造不能應用於給定類型
constructor TripGuesser in class TripGuesser cannot be applied to given types
但在Eclipse中(以及實際上FuseIDE)它不會引發錯誤!
我的代碼是這樣的:
public class TripGuesser {
private ArrayList<VehicleAbstract> vehicles;
private DataAccessHandler dataAcces;
private String stop_id;
@SuppressWarnings("unchecked")
public TripGuesser(ArrayList<? extends VehicleAbstract> vehicles, DataAccessHandler dataAccess, String stop_id){
this.vehicles = (ArrayList<VehicleAbstract>) vehicles;
this.dataAcces = dataAccess;
this.stop_id = stop_id;
}
}
public class HelsinkiStopsHandler {
...
ArrayList<Vehicle> vehicles = vehiclesPerRoute.get(routeAndDirectionId);
TripGuesser guesser = new TripGuesser(vehicles, dataAccess, last_stopId);
...
}
public class Vehicle extends VehicleAbstract{
...
}
public abstract class VehicleAbstract{
...
}
我媒體鏈接嘗試不同的調用構造函數,所以我的班HelsinkiStopsHandler看起來像:
public class HelsinkiStopsHandler {
ArrayList<? extends VehicleAbstract> vehicles = vehiclesPerRoute.get(routeAndDirectionId);
TripGuesser guesser = new TripGuesser(vehicles, dataAccess, last_stopId);
}
,但我仍然得到同樣的錯誤。
我知道這裏有很多熟悉的問題,但這些問題的答案不爲我工作...
Java版本:1.7.0
保險絲IDE版本:6.0.0
與Maven版本編譯:3.1.0
您可能需要顯示真實的代碼。另外請注意,Eclipse有它自己的編譯器,偶爾它會給出來自javac的不同結果。因此,Eclipse和javac的版本也是相關的細節。 –
如果您提供SSCCE,有人更可能會嘗試幫助您。而且,是的,版本號對於調查這類問題非常重要。 –
爲什麼不一直使用** B **?爲什麼你需要 **?在構造函數中擴展B **? – arajashe