【Java】 Void 类型

 

void 也算一个类型,而且是基本数据类型

和其它数据类型一样提供了对应的包装类Void

每个包装类都提供一个TYPE字节实例,返回对应的原型类实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public static void main(String[] args) {
    Class<?>[] basicTypes = {
        void.class,
        boolean.class,
        char.class,
        byte.class,
        short.class,
        int.class,
        long.class,
        float.class,
        double.class
    };
    Class<?>[] wrapperTypes = {
        Void.class,
        Boolean.class,
        Character.class,
        Byte.class,
        Short.class,
        Integer.class,
        Long.class,
        Float.class,
        Double.class
    };
    Class<?>[] typeInWrapperTypes = {
        Void.TYPE,
        Boolean.TYPE,
        Character.TYPE,
        Byte.TYPE,
        Short.TYPE,
        Integer.TYPE,
        Long.TYPE,
        Float.TYPE,
        Double.TYPE
    };
 
    System.out.println(Arrays.toString(basicTypes));
    System.out.println(Arrays.toString(wrapperTypes));
    System.out.println(Arrays.toString(typeInWrapperTypes));
    System.out.println(Arrays.equals(basicTypes, typeInWrapperTypes));
}

 

基础类型void 作为方法返回类型时,不能写return,否则编译报错

但是Void类型,必须提供返回值,返回Null值

1
2
3
4
5
6
public void fun1() {
    // return null;
}
public Void fun2() {
   return null;
}

  

可以通过反射设置Void类型,返回一个真实Void类型实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static Void fun() {
    try {
        Class<Void> voidClass = Void.class;
        Constructor<Void> declaredConstructor = voidClass.getDeclaredConstructor();
        declaredConstructor.setAccessible(true);
        Void aVoid = declaredConstructor.newInstance();
        System.out.println(aVoid + " by reflect");
        System.out.println("aVoid == null -> " + (aVoid == null));
        return aVoid;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

打印结果:

1
2
java.lang.Void@7f31245a by reflect
aVoid == null -> false

  

 

posted @   emdzz  阅读(1498)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2020-06-07 【Java】【设计模式 Design Pattern】迭代器模式 Iterator/Cursor
2020-06-07 【Java】【设计模式 Design Pattern】命令模式 Command
点击右上角即可分享
微信分享提示