Я хочу написать метод, который принимает в качестве параметра либо результат вызова Lambdaj.on(), либо строку.Есть ли способ определить во время выполнения, если объект был создан с использованием метода Lambdaj.on()?
public static <T> void method(T arg) {
}
T
может быть строкой здесь. Можно ли определить, был ли arg создан с использованием метода Lambdaj.on()?
Верно ли 'Lambdaj.on' String? Если нет, и '! (Arg instanceof String)', то он исходит из 'Lambdaj.on' (или имеет значение null). –
Да, 'Lambdaj.on' может возвращать любой тип. Это действительно здорово, потому что вы можете писать 'on (SomeClass.class) .getX(). GetY()' – alkedr
Тогда вы не можете, потому что, если вы получите String, это может быть строка, переданная пользователем напрямую или строка возвращенный 'getY()', и вся информация об источнике была потеряна. (С другой стороны, если 'getY' фактически возвращает тип, который подклассифицирует String и добавляет некоторые интерфейсы, вы можете проверить наличие этих интерфейсов. Это кажется невозможным без модифицированной JVM, однако, поскольку String является окончательной.) –