【问题标题】:java: constructor in class cannot be applied to given typesjava:类中的构造函数不能应用于给定类型
【发布时间】:2013-11-04 11:11:37
【问题描述】:

当我尝试使用 maven 编译我的代码时,我收到以下错误:

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

Fuse IDE 版本:6.0.0

使用 maven 版本编译:3.1.0

【问题讨论】:

  • 你可能需要展示真实的代码。另外,请注意 Eclipse 有自己的编译器,有时它会给出与 javac 不同的结果。因此,Eclipse 和 javac 的版本也是相关的细节。
  • 如果您提供 SSCCE,则更有可能有人尝试帮助您。而且,是的,版本号对于调查此类问题非常重要。
  • 为什么不始终使用B?为什么需要?在构造函数中扩展 B
  • 我编辑了我的问题,所以现在它包含真实代码和版本号...

标签: java constructor compiler-errors


【解决方案1】:

我找到了解决方案... 当我的代码如下所示时它可以工作:

 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);
      ...
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多