【问题标题】:The compiler seems to be confusing two versions of an overloaded method. Why?编译器似乎混淆了重载方法的两个版本。为什么?
【发布时间】:2012-11-06 22:01:00
【问题描述】:

在我的jsp文件中有一行:

byte[] imageData = Base64.decodeBase64(request.getParameter("imageBase64"));

日食抱怨:

Base64 类型中的方法 decodeBase64(byte[]) 不适用于参数 (String)"

它说该方法得到一个String,但它需要一个byte[]。 但是在Base64 类中有两个decodeBase64 的重载版本;一个有参数String, 一个带有参数byte[]

我不明白为什么编译器似乎认为我使用不正确的String 参数调用byte[]version,它应该使用String 版本而没有任何编译器错误。

【问题讨论】:

  • 你试过像 (String)request.getParameter("imageBase64") 那样明确地进行类型转换吗?
  • 我猜这是版本问题。您使用的是哪个版本的库?
  • 你使用什么库?
  • 您可能使用的是旧版本的库;不支持String 版本。
  • 还要确保Base64 来自正确的包。

标签: java compiler-construction overloading


【解决方案1】:

org.apache.commons.codec.binary中的Base64类有2个解码方法

static byte[]   decodeBase64(byte[] base64Data) since beginning

static byte[]   decodeBase64(String base64String) since version 1.4.

我认为你的类路径中必须有 commons codec 1.4 之前的 jar

希望对你有帮助。

【讨论】:

  • 你找到了:我正在使用 commons-codec-1.3.jar。感谢您消除这种困惑。 (更糟糕的是:我发现我的一位同事将 commons-codec-1.3.jar 和 commons-codec-1.4.jar 放入了库中)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多