数组问题,作为参数时的写法问题

TrustManager[] array = { new MyTrustManager() };

正确:sslContext.init(kmf.getKeyManagers(), { new MyTrustManager() }, null);
错误:sslContext.init(kmf.getKeyManagers(), array, null);

问题就处在这个array的写法上,难道{}不能被认为是数组吗

数组的声明,赋值。就三种;
1. int[] a=int[length]; 然后赋值,然后才使用
2.int[] a={1,2,3};
3,int[] a=new int[]{1,2,3};
并且{}只有给数组初始化赋值的时候才可以用,其他地方{}除了类体方法体使用,
java并没赋予{}其他用处。

题主正确错误是不是写反了,,

我试了一下确实有错,,原因我感觉这可能是一种不对的语法吧,,

编译原理会通过自动机对程序进行解析,这种写法可能不符合规矩。,,,不知道有不有大神给出权威的解释,我仅一家之言。

不是,数组的写法是

TrustManager[] array = new TrustManager[3];

这是上次直接论坛回复别人处理这个问题的原因,主要就是语法错误,你直接理解为那种写法只能再初始化的时候使用就行了,看看错误提示
图片说明

图片说明

是不是传入的参数类型不匹配,TrustManager[]与MyTrustManager() ,子父类关系吧!
方法sslContext.init(),需要传入的数组类型不是MyTrustManager而不能是TrustManager