Class.getMethod in class's static initializer block



If I call A.class.getMethod() from static initializer block of class
A, I get NoSuchMethodException.

Example:

class A {
static Method m;

private static void method(String str) {
System.out.println(str);
}

static {
try {
m = A.class.getMethod("method", new Class[] {String.class});
} catch(NoSuchMethodException e) {
throw new ExceptionInInitializerError(e);
}
}
}

This code always throws the ExceptionInInitializerError caused by
NoSuchMethodException.
Why does this happen?


Actually, I would like to write something like this:

class A {
private static void method(String str) {
System.out.println(str);
}
static Method m = A.method;
}

Of course, this code is invalid, but my idea is that the presence of
method is known at compile time, so I don't want the overhead of
reflection and I'd rather get a compilation error if there is no such
method. Something similar is possible with function pointers in C, but
is there sth. like that in Java?

Thanks for any help!

.



Relevant Pages

  • Re: Class.getMethod in classs static initializer block
    ... A, I get NoSuchMethodException. ... private static void method(String str) { ... static Method m = A.method; ...
    (comp.lang.java.programmer)
  • Re: String empty test
    ... static method in your helper library and kill all the birds like: ... public static bool IsNullOrEmptyTrim(string str) ... >> public bool IsNullOrEmpty ... >> William Stacey, MVP ...
    (microsoft.public.dotnet.languages.csharp)