2013-11-04 41 views
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

+2

您可能需要顯示真實的代碼。另外請注意,Eclipse有它自己的編譯器,偶爾它會給出來自javac的不同結果。因此,Eclipse和javac的版本也是相關的細節。 –

+0

如果您提供SSCCE,有人更可能會嘗試幫助您。而且,是的,版本號對於調查這類問題非常重要。 –

+0

爲什麼不一直使用** B **?爲什麼你需要 **?在構造函數中擴展B **? – arajashe

回答

0

我找到了解決辦法... 它工作時,我的代碼如下所示:

public class TripGuesser { 
    private ArrayList<VehicleAbstract> vehicles; 
    private DataAccessHandler dataAcces; 
    private String stop_id; 

    @SuppressWarnings("unchecked") 
    public TripGuesser(ArrayList<VehicleAbstract> vehicles, DataAccessHandler dataAccess, String stop_id){ 
     this.vehicles = vehicles; 
     this.dataAcces = dataAccess; 
     this.stop_id = stop_id; 
    } 
} 


public class HelsinkiStopsHandler { 
     ... 
     ArrayList<? extends VehicleAbstract> vehicles = vehiclesPerRoute.get(routeAndDirectionId); 
     ArrayList<VehicleAbstract> vehiclesAbs = (ArrayList<VehicleAbstract>) vehicles; 
     TripGuesser guesser = new TripGuesser(vehiclesAbs, dataAccess, last_stopId); 
     ... 
} 
相關問題