No seu caso, você deveria passar (estilo antigo, e mais compreensível):
cls.getMethod ("getContents", new Class[]{})
ou
cls.getMethod ("getContents", new Class[0])
uma vez que você está indicando a getMethod que quer um método "getContents" que não tenha argumentos.
Segundo o JavaDoc de getMethod, é possível passar "null" para indicar um array vazio. Só que qual null?
Passar (Class)null tem o efeito de passar um array de Class com exatamente 1 elemento (null).
Passar (Class[])null tem o efeito desejado no JavaDoc, ou seja, passar um null que é um array de Class.
Eu passaria "new Class[0]" embora isso requeira a criação de um objeto, porque também pode ser "back-ported" para versões mais antigas do Java.
O que é muito mais simples, no entanto, é não passar nada; isso equivale a passar new Class[0].
import java.lang.reflect.*;
class TesteGetMethod {
public static void main(String[] args) throws NoSuchMethodException{
Method m;
// Chamada compatível com JDK <= 1.4
// iconst_0
// anewarray #4; //class java/lang/Class
// invokevirtual #5; //Method java/lang/Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
m = TesteGetMethod.class.getMethod ("main", new Class[0]);
// O código a seguir provoca um "warning" e é intencionalmente ambíguo
// Não deve ser usado
// aconst_null
// invokevirtual #5; //Method java/lang/Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
m = TesteGetMethod.class.getMethod ("main", null);
// Note que este cast é equivalente a:
// m = TesteGetMethod.class.getMethod ("main", new Class[]{(Class) null});
// ou seja, não é o que está escrito na documentação.
// iconst_1
// anewarray #4; //class java/lang/Class
// dup
// iconst_0
// aconst_null
// checkcast #4; //class java/lang/Class
// aastore
// invokevirtual #5; //Method java/lang/Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
m = TesteGetMethod.class.getMethod ("main", (Class) null);
// ldc_w #2; //class TesteGetMethod
// ldc #3; //String main
// aconst_null
// checkcast #6; //class "[Ljava/lang/Class;"
// invokevirtual #5; //Method java/lang/Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
// Provavelmente é isto que a documentação sugere, se você não passar nada
m = TesteGetMethod.class.getMethod ("main", (Class[]) null);
// Como é varargs, você pode passar ZERO parâmetros se não for ambíguo.
// Neste caso é equivalente a passar new Class[0].
// iconst_0
// anewarray #4; //class java/lang/Class
// invokevirtual #5; //Method java/lang/Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
m = TesteGetMethod.class.getMethod ("main");
}
}