java object 是否为null,java – 为什么cast(Object)null结果为null?
我使用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?相关推荐
- null在java存在的意义何在,Java并发编程——volatile关键字
一.volatile是什么 volatile是Java并发编程中重要的一个关键字,被比喻为"轻量级的synchronized",与synchronized不同的是,volatile ...
- java获取object属性值_java反射获取一个object属性值代码解析
有些时候你明明知道这个object里面是什么,但是因为种种原因,你不能将它转化成一个对象,只是想单纯地提取出这个object里的一些东西,这个时候就需要用反射了. 假如你这个类是这样的: privat ...
- java 父类 超类_Java超类-java.lang.object
Java是面向对象的,Object是所有对象的超类(不是继承,也不是实现接口) Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 如 ...
- java 类 null_深入理解java中的null“类型”
本文研究的主要是java中的null"类型"的相关实例,具体介绍如下. 先给出一道简单的null相关的题目,引发我们对null的探讨,后面会根据官方语言手册对null"类 ...
- 报错,null [java.lang.IndexOutOfBoundsException,Index: 5, Size: 5]
问题: { "success": false, "code": "S0000", "error" ...
- java api 第一个类是_JAVA之Object常用API
[Object类.常用API] 主要内容Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 第一章 Object类 1.1 概 ...
- Java中Object转Map类型,Map转Object类型
前言 在使用Java编程过程中,经常会遇到获取的数据为Object类型,但只是以这种方式传输,实质还是Map类型,此时就涉及到两种类型的相互转换. 强制转换 在类型转换工程中,常见的转换方式为强制转换 ...
- 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 ...
- java中任何变量都可以被赋值为null,java中当给一个对象赋值为null时发生了什么...
比如下面的代码 String[] arr = new String[10]; arr=null; 将arr这个引用置空,不指向任何对象. 上面new的那个数组对象,则没有任何引用指向它,垃圾回收器可以 ...
- java中object类怎么赋值_Java面向对象之Object类
一.继承体系的老祖宗是Object类.(Object类是所有类的父类) 当我们不希望在程序中某些类被继承,某些方法被重写,某些数据被修订.就是final关键字闪亮登场的时候了. 一个类没有使用exte ...
最新文章
- C/C++内存泄露,如何解决内存泄露?
- [NodeJs] 如何获取项目的根路径?
- 抓包工具mitmproxy | mitmweb基本用法(二)
- 图的最短路算法(Dijkstra和Floyd-Warshall)
- ASP.NET中用healthMonitor属性用法
- 计算机显示器出现黑屏分析
- 工业机器人编程语言c语言,工业机器人编程语言和编程方式
- android去掉锁屏界面,android怎么去掉锁屏界面
- JAVA 配合 Vue前台,完成中文、拼音全拼、拼音首字母检索
- 计算机教室的英文音标,小学四年级英语单词(带音标).doc
- 操作系统:作业调度算法--短作业优先
- ios app 提交审核
- 迅雷9去右侧浏览器补丁
- 面试谈薪资,别不好意思,4个技巧帮你勇敢谈薪
- java中实现多态的机制
- ABAP删除字符串某字符
- JavaC#实现账号登录、账号注册、修改密码、账号注销等功能
- Homebrew作者面试Google被拒,只因写不出一道算法题
- 我的订阅号、网站上线了
- OpenGL与DirectX 比较
热门文章
- 【看表情包学Linux】软件包管理器 yum | Vim 编辑器介绍 | Vim 文本批量化操作 | 配置 Vim
- html 下拉菜单自动填充,下拉框自动实现自动填充
- Power BI——柱形图
- matlab无限长一维原子链,固体物理 03-03一维双原子链
- OPenGL笔记--创建三维图形(立方体)
- java窗体 个人信心_帮忙写下代码java swing,个人信息实例
- layer扩展打开/关闭动画
- Excel合并单元格读取
- 使用Dir函数遍历文件和目录
- 利用Python根据模板生成Word文档