Java 如何将byte[]类型的对象转换为字符串

Java 如何将byte[]类型的对象转换为字符串,java,object,compiler-errors,Java,Object,Compiler Errors,我有一个函数,它接收类型为bytes[]的对象,我需要将其转换为字符串。这就是我的代码的样子 class TestClass { public static void main(String args[] ) throws Exception { byte b[] = "Hello".getBytes(); convert(b); } public static void convert(Object s){ St

我有一个函数,它接收类型为bytes[]的对象,我需要将其转换为字符串。这就是我的代码的样子

class TestClass {
    public static void main(String args[] ) throws Exception {

        byte b[] = "Hello".getBytes();
        convert(b);    
    }
    public static void convert(Object s){
        String str = new String(s);
        System.out.println("In method "+str);
    }
}
正如建议的那样,我通过将bytes[]数组作为参数传递,创建了一个新的String对象。它抛出以下错误

TestClass.java:24: error: no suitable constructor found for String(Object) String str = new String(s);
根据我的理解,这是因为在编译时convert()方法知道“s”是一个对象,而不是字节[]


但是我不知道如何解决这个问题。

您知道您使用的是
字节[]
,因此您可以在方法的签名中声明:

public static void convert(byte[] s) {
    // Here ---------------^
    String str = new String(s);
    System.out.println("In method "+str);
}

您可以使用以下两种方法之一:

  • 将对象类型转换为
    byte[]
    like
    String str=newstring((byte[])s
  • 将方法签名更改为
    公共静态无效转换(字节[]s)

  • 只需将方法签名更改为<代码>公共静态空隙转换(字节[])?考虑在方法中通过将参数传递为对象[]的情况,将在方法声明中以字节[]的形式工作吗?Javas编译器在编译时提供类型安全性,而不是运行时。因此,它不会检查对该方法的实际调用是否实际提供了
    字节[]
    ,它只会看到您声明了不匹配的变量
    对象。对于编译器来说,假设声明的
    对象
    字节[]
    而不是
    汽车[]
    是不安全的。了解如何进行类型安全编程,避免对象
    。byte甚至不是一个类,它是一个原语。如果我将参数作为byte[]类型的对象发送,它会起作用吗?别忘了,时间越长越快。20年前我们已经有了C++98。独立日比这更古老。这是你在三四十年前会做的事