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