class OnArrayTest { interface Cln { Object m(int[] i); } interface IA { void m(int i); } interface I { void m(int[] i); } interface Len { int len(T[] ta); } interface ToStr { String m(T[] ta); } interface ArrayReturnType { T make(int size); } static class Foo { } interface ObjectArrayReturnType { Object make(int size); } public static void main(String[] args) { Cln s = int[]::clone; IA a = int[]::new; I i = int[]::new; Len strLen = String[]::length; ToStr toStr = Integer[]::toString; ArrayReturnType a1 = String[]::new; ArrayReturnType a2 = String[][]::new; ArrayReturnType a3 = int[]::new; ObjectArrayReturnType a4 = Foo[]::new; ObjectArrayReturnType a5 = Foo[]::new; } } class IDEA106973 { interface Function { R apply(T t); } { Function a = String[] :: new; Function a1 = String[] :: new; Function a2 = String[] :: new; } }