Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编写自己的包装器类并声明其元素数组_Java_Arrays_Class_Char_Declaration - Fatal编程技术网

Java 编写自己的包装器类并声明其元素数组

Java 编写自己的包装器类并声明其元素数组,java,arrays,class,char,declaration,Java,Arrays,Class,Char,Declaration,我编写了简单的类TheChar,它是原语类型char的包装类 public class TheChar { private char value; public TheChar(char value) { this.value = value; } public char getValue() { return value; } } 为什么我不能像下面这样声明一个命令数组: public class Test {

我编写了简单的类TheChar,它是原语类型char的包装类

public class TheChar {
    private char value;
    public TheChar(char value) {
        this.value = value;
    }
    public char getValue() {
        return value;
    }
}
为什么我不能像下面这样声明一个命令数组:

public class Test {
    public static void main(String[] args) {
        TheChar[] lol =  {'o','a'};
    }
}
因为当我使用字符类声明时

Character[] lol = {'o','a'};
will fork fine

您必须首先包装字符,如下所示:

TheChar[]lol={新TheChar'o',新TheChar'a'}

因为“a”是字符,不能强制转换为自定义类,所以必须先包装字符,如:

TheChar[]lol={新TheChar'o',新TheChar'a'}


因为“a”是一个字符,不能强制转换为自定义类,字符不是基本字符的简单包装,java编译器支持它们之间的转换。为了能够以您想要的方式定义数组,您不仅需要编写包装器,还需要编写java编译器。

字符不是原始字符的简单包装器,java编译器支持它们之间的转换。为了能够以您想要的方式定义数组,您不仅需要编写包装器,还需要编写java编译器。

但是当我使用Character类时,我可以只键入Character[]lol={'o','a'};Character类是Java语言的一部分,因此它具有执行强制转换的内部机制。它只是让您更容易,所以您不需要每次都调用构造函数。当您执行字符串s=foo时,您应该编写字符串s=newStringfoo,但它已经为您实现了;Character类是Java语言的一部分,因此它具有执行强制转换的内部机制。它只是让您更容易,所以您不需要每次都调用构造函数。当您执行strings=foo时,您应该编写strings=newstringfoo,但它已经为您实现了。