Passing directly an array initializer to a method parameter doesn't work

后端 未结 3 1215
悲&欢浪女
悲&欢浪女 2020-11-27 08:16
package arraypkg;

import java.util.Arrays;

public class Main
{
    private static void foo(Object o[])
    {
        System.out.printf(\"%s\", Arrays.toString(o));         


        
相关标签:
3条回答
  • 2020-11-27 08:56
    foo({1,2});
    

    {1, 2} this kind of array initialization only work at the place you are declaring an array.. At other places, you have to create it using new keyword..

    That is why: -

    Object[] obj = {1, 2};
    

    Was fine.. This is because, the type of array, is implied by the type of reference we use on LHS.. But, while we use it somewhere else, Compiler cannot find out the type (Like in your case)..

    Try using : -

      foo(new Object[]{1,2});
    
    0 讨论(0)
  • 2020-11-27 09:02

    foo({1,2}); doesn't tell what type of array it is. So, compiler fails to understand the syntax. All other declarations specify type of array.

    0 讨论(0)
  • 2020-11-27 09:22

    foo({1,2}); is NOT an Array.

    And as your foo() method takes an array type parameter, this fails.

    0 讨论(0)
提交回复
热议问题