小编d d*_*dui的帖子

为什么传递原始类型不会给我错误?

当我遇到以下段落时,我正在从https://docs.oracle.com/javase/tutorial/java/generics/阅读Java文档:

一个简单的Box类首先要检查可对任何类型的对象进行操作的非通用Box类。它只需要提供两种方法:set(将对象添加到框中)和get(将其检索):

public class Box {
    private Object object;

    public void set(Object object) { this.object = object; }
    public Object get() { return object; }
}
Run Code Online (Sandbox Code Playgroud)

由于它的方法接受或返回一个Object,因此只要它不是原始类型之一,您就可以随意传递所需的任何内容。在编译时无法验证类的使用方式。代码的一部分可能会将Integer放在框中,并期望从中取出Integer,而代码的另一部分可能会错误地传入String,从而导致运行时错误。

我运行了以下代码

public class Box {
private Object object;

public void set(Object object) { this.object = object; }
public Object get() { return object; }
}
Run Code Online (Sandbox Code Playgroud)

..

public class test {
 public static void main(String[] args) {
    Box box = new Box();
    String s = "hello";
    box.set(s);
    System.out.print(box.get());
    Box box2 = new …
Run Code Online (Sandbox Code Playgroud)

java generics

2
推荐指数
1
解决办法
83
查看次数

标签 统计

generics ×1

java ×1