【问题标题】:why can't I import separately from the method declaration?(java)为什么我不能与方法声明分开导入?(java)
【发布时间】:2015-02-24 12:48:12
【问题描述】:

我编写了一个简单的程序来解码我拥有的 base64 编码字符串。我使用 eclipse 搜索了一种方法来做到这一点,并发现方法 javax.xml.bind.DatatypeConverter.parseBase64Binary(String s) 正是这样做的。我发现当我使用方法的完整位置时,程序运行良好:

public static void main(String args[]) {
String s = "cGFzc3dvcmQ6IGlsb3ZlbXlzZWxmISEx";
byte[] converted = javax.xml.bind.DatatypeConverter.parseBase64Binary(s);
System.out.println(new String(converted));
}

但由于某种原因,当我尝试导入位置时,eclipse 给了我一个错误:

导入:

import javax.xml.bind.DatatypeConverter.*;

第一个代码中的新第 3 行:

 byte[] converted = javax.xml.bind.DatatypeConverter.parseBase64Binary(s);

错误我进入新的第 3 行:

 The method parseBase64Binary(String) is undefined for the type **name of class**

我很乐意得到解释。

【问题讨论】:

  • 使用 import javax.xml.bind.DatatypeConverter;而不是 import javax.xml.bind.DatatypeConverter.*;
  • @antonio 我试过了,它给出了同样的错误,无论如何我认为星号是必需的。
  • import 用于导入类型import static 用于导入静态方法,这就是您要在此处执行的操作。

标签: java eclipse import base64 decode


【解决方案1】:

你需要做一个static 导入:

import static javax.xml.bind.DatatypeConverter.*;

import static javax.xml.bind.DatatypeConverter.parseBase64Binary;

然后你就可以做到:

byte[] converted = parseBase64Binary(s);

更多信息:

【讨论】:

  • 太棒了!有效!我很乐意提供简短的解释或参考。
  • 查看我提供的链接。 :)
  • 非常感谢!我理解了问题所在,程序运行良好。
【解决方案2】:
import static javax.xml.bind.DatatypeConverter.*;

然后-

byte[] converted = parseBase64Binary(s);

【讨论】:

    【解决方案3】:

    删除javax.xml.bind.DatatypeConverter.*;中的.*

    import javax.xml.bind.DatatypeConverter;
    
    public class Test {
    
        public static void main(String[] args)
        {
            String s = "cGFzc3dvcmQ6IGlsb3ZlbXlzZWxmISEx";
            byte[] converted = DatatypeConverter.parseBase64Binary(s);
            System.out.println(new String(converted));
        }
    }
    

    【讨论】:

    • Np :) 我会避免静态导入。它使您的代码更难以阅读,因为它看起来像是您自己的类方法之一。
    猜你喜欢
    • 1970-01-01
    • 2011-12-15
    • 2010-09-06
    • 1970-01-01
    • 2010-09-19
    • 2018-04-08
    • 1970-01-01
    相关资源
    最近更新 更多