I have filed the report. Regarding the 8156043 fix: Yes, when I use debugger to reverse the effects of `list.sort(MethodOrder.instance)` in MethodInfo.get(Class<?>), the write method is found as expected.
Regards, Vadim On 29 January 2018 at 16:40, Semyon Sadetsky <[email protected]> wrote: > Hello Vadim, > > It looks like a consequence of the 8156043 fix discussed on this alias in > May 2016. The fix author was warned that his change may result in wrong > property setter methods in case of overriding. Nevertheless he insisted > that the fix is justified by some improved stability reasons. It could > require revising if you file this bug. > > --Semyon > > > On 01/27/2018 03:45 AM, Vadim Beilin wrote: > >> Hello >> We have come across what looks like a regression between Java 8 and Java >> 9. >> >> The following program prints different results. >> ------------------------------ BeansMain.java >> import java.beans.*; >> >> class Parent<T> { >> T value; >> public T getValue() { >> return value; >> } >> protected void setValue(T value) { >> this.value = value; >> } >> } >> >> class Child extends Parent<Runnable> { >> @Override >> public void setValue(Runnable value) { >> super.setValue(value); >> } >> } >> >> public class BeansMain { >> public static void main(String[] args) throws IntrospectionException { >> BeanInfo beanInfo = Introspector.getBeanInfo(Child.class); >> for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) { >> System.out.println(pd.getName() + "\n >> " + >> pd.getReadMethod() + "\n << " + pd.getWriteMethod()); >> } >> } >> } >> ------------------------------ >> >> With Java 8 (1.8.0_161-b12): >> ------------------------------ >> class >> >> public final native java.lang.Class java.lang.Object.getClass() >> << null >> value >> >> public java.lang.Object Parent.getValue() >> << public void Child.setValue(java.lang.Runnable) >> ------------------------------ >> >> With Java 9 (9.0.1+11): >> ------------------------------ >> class >> >> public final native java.lang.Class java.lang.Object.getClass() >> << null >> value >> >> public java.lang.Object Parent.getValue() >> << null >> ------------------------------ >> >> Is it something you have seen before? Does it look like a bug to you? >> >> >> >> Thanks, >> Vadim >> > >
