如果我有一个vararg Java方法foo(Object ...arg)
并调用foo(null, null)
,则我arg[0]
和arg[1]as
都将null。但是,如果我呼叫foo(null)
,则arg
其本身为null。为什么会这样呢?
我应该怎么称呼foo
这样foo.length == 1 && foo[0] == null
的true
?
问题是,当你使用原义null时,Java不知道它应该是哪种类型。它可以是空对象,也可以是空对象数组。对于单个参数,假定为后者。
你有两种选择。将null显式转换为Object或使用强类型变量调用该方法。请参见下面的示例:
public class Temp{
public static void main(String[] args){
foo("a", "b", "c");
foo(null, null);
foo((Object)null);
Object bar = null;
foo(bar);
}
private static void foo(Object...args) {
System.out.println("foo called, args: " + asList(args));
}
}
输出:
foo called, args: [a, b, c]
foo called, args: [null, null]
foo called, args: [null]
foo called, args: [null]
问题内容: 在下面的代码中,输出为 串 如果我使用类型为参数的方法删除该方法,则输出为 目的 我知道当参数类型不完全匹配时方法的重载行为如何,但是我不明白如何将 null 视为和/或参数。 这有什么解释? 问题答案: 根据Java规范 15.12.2.5节,它始终使用最特定的方法。 简介相当具体: 如果多个成员方法既可访问又可应用于方法调用,则必须选择一个成员方法来为运行时方法分派提供描述符。Ja
问题内容: 我试图以反射方式在Java中调用此方法: 问题是我想将null传递为,以便foo变为null。 但是,在以下方法中,它假定没有参数,并且我得到(): 这是如何完成的? 问题答案: 尝试
大家好,我正在使用Java反射来调用方法,并将参数传递给这些方法。下面是示例代码 用于调用方法的一段代码 其中test=“method1”/“method2”/“method3” obj是基类的对象 上面的代码抛出的是NOSuchmethodException
我使用带有MVC模式的ASP. Net Core 3.1创建了一个全新的Visual Studio 2019 Web应用程序。 我的控制器有一个 HttpPost 方法,该方法应该有一个传入的 Json 对象(我使用 [FromBody] 作为传入参数)。 无论我尝试什么,传入的参数始终为 Null。我尝试将参数更改为字符串,并将模型修改为简单的 3 字段类,但它仍然显示为 null。 我使用Ch
不幸的是: TweetServiceTest.java Hibernateutil.java