2011-01-09 3 views
2

Что такое дескриптор поля для объекта [] [] в дескрипторе метода? Скажем, существует класс foo.bar.Class и метод принимает класс [] [], в соответствии сДескриптор поля Java для Object [] []

http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#14152

или спецификации JNI я понимаю, что это должно быть

[[Lfoo/bar/Class; 

но это оценивается в массив из [foo.bar.Class], который, конечно, запускает java.lang.NoClassDefFoundError.

Если "внутренний" массив, вероятно, будет рассматриваться как java.lang.Object, в результате чего

[Ljava/lang/Object; 

?

ответ

2

Вы делаете что-то неправильно, я думаю. Это работает для меня:

package ro.redeul.test; 

public class Test { 

    public static void main(String[] args) throws NoSuchMethodException { 
     System.out.println("x: " + Test.class.getMethod("method").getReturnType().toString()); 
    } 

    public Test[][] method() { 
     return null; 
    } 
} 

печатает x: class [[Lro.redeul.test.Test;

Можете ли вы предоставить больше контекста?

+0

Я действительно пропустил опечатку :(отсутствует ';' в одном месте в конце строки дескриптора. Проблема решена :) – barbaz

+0

Ah .. ok then :) –

+0

Я также посчитал, что это простой способ для проверки дескрипторных строк является «javap -c» – barbaz