- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [ ] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 2.7.4.1
* Java version: 1.8


### Actual Result

[https://github.com/apache/dubbo/blob/f89a1a8dadb419a06494433ed53b9a35f69c36dc/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java#L497](https://github.com/apache/dubbo/blob/f89a1a8dadb419a06494433ed53b9a35f69c36dc/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java#L497)


[https://github.com/apache/dubbo/blob/f89a1a8dadb419a06494433ed53b9a35f69c36dc/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java#L1207](https://github.com/apache/dubbo/blob/f89a1a8dadb419a06494433ed53b9a35f69c36dc/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java#L1207)


### Expected Result

```
qulified  ==> qualified

form ==> from
```

List<Type> genericTypes = new LinkedList<>(asList(sourceClass.getGenericInterfaces()));
        
        genericTypes.add(sourceClass.getGenericSuperclass());
        Set<ParameterizedType> parameterizedTypes = genericTypes.stream()
                .filter(type -> type instanceof ParameterizedType)
                .map(type -> ParameterizedType.class.cast(type))  
                .collect(Collectors.toSet());
        if (parameterizedTypes.isEmpty()) { 
            genericTypes.stream()
                    .filter(type -> type instanceof Class)
                    .map(type -> Class.class.cast(type))
                    .forEach(superClass -> {
                        parameterizedTypes.addAll(findParameterizedTypes(superClass));
                    });
        }
        return unmodifiableSet(parameterizedTypes);                     
    }
    /**
     * Find the hierarchical types form the source {@link Class class} by specified {@link Class type}.
     *
     * @param sourceClass the source {@link Class class}
     * @param matchType   the type to match
     * @param <T>         the type to match
     * @return non-null read-only {@link Set}
     * @since 2.7.5
     */
    public static <T> Set<Class<T>> findHierarchicalTypes(Class<?> sourceClass, Class<T> matchType) {
        if (sourceClass == null) {
            return Collections.emptySet();
        }