Получить только явные параметры для конструктора внутреннего классаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получить только явные параметры для конструктора внутреннего класса

Сообщение Anonymous »

В документации по методуstructor.getParameterTypes() сказано следующее:

... Обратите внимание, что конструкторы некоторых внутренних классов могут иметь неявно объявленный параметр в дополнение к явно объявленным.

Как говорится, я пытался использовать его для внутреннего класса с конструктором без параметров, и он дал мне конструктор с одним параметром (включающий класс, пример ниже). Есть ли простой способ получить только явные параметры?

Код: Выделить всё

import java.lang.reflect.*;
import java.util.*;
import java.util.stream.*;

public class TestInner{

public class Inner{}

public static void main(String[] args) throws ClassNotFoundException {
Class innerClass = Class.forName("TestInner$Inner");
Constructor[] constructors = innerClass.getConstructors();
String str = Arrays.stream(constructors).map(TestInner::stringifyConstructor).collect(Collectors.joining(", "));
System.out.println(str);
}
public static String stringifyConstructor(Constructor c){
return "("+Arrays.stream(c.getParameterTypes()).map(e->e.getName()).collect(Collectors.joining(", "))+")";
}
}
Я понимаю, что могу просто удалить первый элемент, но как мне узнать, является ли первый элемент на 100% неявным? Кажется, что не все внутренние классы имеют этот параметр (потому что в документации говорится, что «некоторые внутренние классы могут», а внутренние классы, если я правильно понимаю, означают нестатические вложенные классы). Есть ли какой-либо другой фактор (кроме того, что он не статический), который может привести к отсутствию этого параметра?

Подробнее здесь: https://stackoverflow.com/questions/790 ... nner-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»