<div dir="ltr">Hello<br>We have come across what looks like a regression between Java 8 and Java 9.<br><br>The following program prints different results.<br>------------------------------ BeansMain.java<br>import java.beans.*;<br><br>class Parent<T> {<br>    T value;<br>    public T getValue() {<br>        return value;<br>    }<br>    protected void setValue(T value) {<br>        this.value = value;<br>    }<br>}<br><br>class Child extends Parent<Runnable> {<br>    @Override<br>    public void setValue(Runnable value) {<br>        super.setValue(value);<br>    }<br>}<br><br>public class BeansMain {<br>    public static void main(String[] args) throws IntrospectionException {<br>        BeanInfo beanInfo = Introspector.getBeanInfo(Child.class);<br>        for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {<br>            System.out.println(pd.getName() + "\n  >> " + pd.getReadMethod() + "\n  << " + pd.getWriteMethod());<br>        }<br>    }<br>}<br>------------------------------<br><br>With Java 8 (1.8.0_161-b12):<br>------------------------------<br>class<br>  >> public final native java.lang.Class java.lang.Object.getClass()<br>  << null<br>value<br>  >> public java.lang.Object Parent.getValue()<br>  << public void Child.setValue(java.lang.Runnable)<br>------------------------------<br><br>With Java 9 (9.0.1+11):<br>------------------------------<br>class<br>  >> public final native java.lang.Class java.lang.Object.getClass()<br>  << null<br>value<br>  >> public java.lang.Object Parent.getValue()<br>  << null<br>------------------------------<br><br>Is it something you have seen before? Does it look like a bug to you?<br><br><br><br>Thanks,<br>Vadim<br></div>