我在某处看到了这段代码并且想知道:何时以及为什么有人会做以下事情:
doSomething( (MyClass) null );
Run Code Online (Sandbox Code Playgroud)
你有没有这样做过?你能分享一下你的经历吗?
我已经写了一段时间的java,今天我遇到了以下声明:
public static void main(String... args) {
}
Run Code Online (Sandbox Code Playgroud)
注意数组声明中的"点点点",而不是通常的括号[].显然它有效.事实上,我写了一个小测试,并验证它的工作原理.所以,我拉了java语法,看看这个参数声明的语法在哪里,但没有找到任何东西.
所以对那里的专家来说,这是如何工作的?它是语法的一部分吗?另外,虽然我可以像这样声明函数,但是我不能像这样在函数体内声明一个数组.
无论如何,你知道任何有这个记录的地方.这是好奇心,也许不值得投入任何时间,但我很难过.
在代码中:
public interface ProductInterface {
public List<ProductVO> getProductPricing(ProductVO product, ProductVO prodPackage, String... pricingTypes) throws ServiceException;
}
Run Code Online (Sandbox Code Playgroud)
是什么
String... pricingTypes
Run Code Online (Sandbox Code Playgroud)
意思?这是什么类型的构造?
我需要编写一个java方法sumAll(),它接受任意数量的整数并返回它们的总和.
sumAll(1,2,3) returns 6
sumAll() returns 0
sumAll(20) returns 20
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做.
我无法理解这个问题,并解释了SCJP 1.6自测问题的答案.这是问题所在:
class A { }
class B extends A { }
public class ComingThru {
static String s = "-";
public static void main(String[] args) {
A[] aa = new A[2];
B[] ba = new B[2];
sifter(aa);
sifter(ba);
sifter(7);
System.out.println(s);
}
static void sifter(A[]... a2) { s += "1"; }
static void sifter(B[]... b1) { s += "2"; }
static void sifter(B[] b1) { s += "3"; }
static void sifter(Object o) { s += "4"; }
}
Run Code Online (Sandbox Code Playgroud)
结果是什么?答案是-434,但让我失望的是这本书的解释.它与本章前面解释的概念有很大不同. …
任何人都可以确认我是否正确看到Object...下面方法调用中的参数:
public static void setValues(PreparedStatement preparedStatement, Object... values)
throws SQLException
{
for (int i = 0; i < values.length; i++) {
preparedStatement.setObject(i + 1, values[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
作为Object类型的数组?我不记得...之前在Java中看过.
我有一个简单的你好世界计划的麻烦哈哈!我希望有人可以对此有所了解.
所以收到的错误如下:
$ javac Hello.java
$ java Hello
Exception in thread "main" java.lang.NoSuchMethodError: main
Run Code Online (Sandbox Code Playgroud)
因此,通过错误,我可以看到它显然缺少主要,但它在那里:
class Hello
{
public static void main(String argv)
{
System.out.println("hello world");
}
}
Run Code Online (Sandbox Code Playgroud)
如果有任何帮助,我在Mac OS/X上.
我来自C(++)背景,我对Java的主要兴趣是Android开发.对我来说,这似乎是一个显而易见的问题,但我还没有发现它在任何地方都得到了解决(我确实搜索了stackoverflow并谷歌).我找到的是很多评论,例如:
public String foo(String key, Object[] parameters) {..}Run Code Online (Sandbox Code Playgroud)and
public String foo(String key, Object... parameters) {..}Run Code Online (Sandbox Code Playgroud)are equal
实际上,"Varargs"的java文档明确指出"最后一个参数类型之后的三个句点表明最终参数可以作为数组或参数序列传递"
从同一来源,最常说的理由是,varargs具有"核心API中的重要用途,包括反射,消息格式化和新的printf工具".
鉴于Java是面向对象的,包括垃圾收集并支持动态数组和 Java varargs仅限于单一类型,这有什么优势?(与之相反,例如,C实现了附加功能.)