我使用java 7,并创建了一个varargs方法

public class JavaApplicationTest {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

addBundleMessage("b", Integer.SIZE, "key", (Object) null);

}

public static void addBundleMessage(String bundleName, Integer severity, String key, Object... params) {

if (params == null)

System.out.println("params Is null");

else

System.out.println("Params not null");

}

}

如果我不转换对象,IDE Netbeans或Eclipse会抱怨,但它会编译:

non-varargs call of varags method with inexact argument type for last

parameter

当No cast:它显示params为null

当我将null转换为(Object)时,它显示Params not null

当我将null转换为(Object [])时,它显示params为null

这是正常的行为吗?

解决方法:

是的,这是“正常”的行为.

混淆来自varargs后来用螺栓固定到语言上,并使用数组作为“真实参数”来实现,以保存可变数量的参数.

public static void addBundleMessage(String bundleName, Integer severity,

String key, Object... params) {

几乎是一样的

public static void addBundleMessage(String bundleName, Integer severity,

String key, Object[] params) {

并且在引擎盖下,params被包裹为Object [].

但是,您仍然可以自己传入该数组.

如果使用(Object [])null,则会得到一个参数(即null).

如果使用(Object)null,它使用varargs方法,因此它传入一个数组来保存参数(其中只有一个为null).

对于varargs方法的“正常使用”,params永远不会为空.你可以获得的“最差”是一个空数组(如果根本没有参数).

标签:java,variadic-functions

来源: https://codeday.me/bug/20190826/1728452.html

java object 是否为null,java – 为什么cast(Object)null结果为null?相关推荐

  1. null在java存在的意义何在,Java并发编程——volatile关键字

    一.volatile是什么 volatile是Java并发编程中重要的一个关键字,被比喻为"轻量级的synchronized",与synchronized不同的是,volatile ...

  2. java获取object属性值_java反射获取一个object属性值代码解析

    有些时候你明明知道这个object里面是什么,但是因为种种原因,你不能将它转化成一个对象,只是想单纯地提取出这个object里的一些东西,这个时候就需要用反射了. 假如你这个类是这样的: privat ...

  3. java 父类 超类_Java超类-java.lang.object

    Java是面向对象的,Object是所有对象的超类(不是继承,也不是实现接口) Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 如 ...

  4. java 类 null_深入理解java中的null“类型”

    本文研究的主要是java中的null"类型"的相关实例,具体介绍如下. 先给出一道简单的null相关的题目,引发我们对null的探讨,后面会根据官方语言手册对null"类 ...

  5. 报错,null [java.lang.IndexOutOfBoundsException,Index: 5, Size: 5]

    问题: {     "success": false,     "code": "S0000",     "error" ...

  6. java api 第一个类是_JAVA之Object常用API

    [Object类.常用API] 主要内容Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 第一章 Object类 1.1 概 ...

  7. Java中Object转Map类型,Map转Object类型

    前言 在使用Java编程过程中,经常会遇到获取的数据为Object类型,但只是以这种方式传输,实质还是Map类型,此时就涉及到两种类型的相互转换. 强制转换 在类型转换工程中,常见的转换方式为强制转换 ...

  8. oracle 传递table,将对象类型表从java传递到oracle 8i(Pass table of object type from java to oracle 8i)...

    将对象类型表从java传递到oracle 8i(Pass table of object type from java to oracle 8i) 我需要将一个对象列表(如值表)从java传递给ora ...

  9. java中任何变量都可以被赋值为null,java中当给一个对象赋值为null时发生了什么...

    比如下面的代码 String[] arr = new String[10]; arr=null; 将arr这个引用置空,不指向任何对象. 上面new的那个数组对象,则没有任何引用指向它,垃圾回收器可以 ...

  10. java中object类怎么赋值_Java面向对象之Object类

    一.继承体系的老祖宗是Object类.(Object类是所有类的父类) 当我们不希望在程序中某些类被继承,某些方法被重写,某些数据被修订.就是final关键字闪亮登场的时候了. 一个类没有使用exte ...

最新文章

  1. C/C++内存泄露,如何解决内存泄露?
  2. [NodeJs] 如何获取项目的根路径?
  3. 抓包工具mitmproxy | mitmweb基本用法(二)
  4. 图的最短路算法(Dijkstra和Floyd-Warshall)
  5. ASP.NET中用healthMonitor属性用法
  6. 计算机显示器出现黑屏分析
  7. 工业机器人编程语言c语言,工业机器人编程语言和编程方式
  8. android去掉锁屏界面,android怎么去掉锁屏界面
  9. JAVA 配合 Vue前台,完成中文、拼音全拼、拼音首字母检索
  10. 计算机教室的英文音标,小学四年级英语单词(带音标).doc
  11. 操作系统:作业调度算法--短作业优先
  12. ios app 提交审核
  13. 迅雷9去右侧浏览器补丁
  14. 面试谈薪资,别不好意思,4个技巧帮你勇敢谈薪
  15. java中实现多态的机制
  16. ABAP删除字符串某字符
  17. JavaC#实现账号登录、账号注册、修改密码、账号注销等功能
  18. Homebrew作者面试Google被拒,只因写不出一道算法题
  19. 我的订阅号、网站上线了
  20. OpenGL与DirectX 比较

热门文章

  1. 【看表情包学Linux】软件包管理器 yum | Vim 编辑器介绍 | Vim 文本批量化操作 | 配置 Vim
  2. html 下拉菜单自动填充,下拉框自动实现自动填充
  3. Power BI——柱形图
  4. matlab无限长一维原子链,固体物理 03-03一维双原子链
  5. OPenGL笔记--创建三维图形(立方体)
  6. java窗体 个人信心_帮忙写下代码java swing,个人信息实例
  7. layer扩展打开/关闭动画
  8. Excel合并单元格读取
  9. 使用Dir函数遍历文件和目录
  10. 利用Python根据模板生成Word文档