// Path: src/main/java/com/tkhoon/framework/util/ArrayUtil.java
// public class ArrayUtil {
// 
//     // 判断 Array 是否非空
//     public static boolean isNotEmpty(Object[] array) {
//         return ArrayUtils.isNotEmpty(array);
//     }
// 
//     // 判断 Array 是否为空
//     public static boolean isEmpty(Object[] array) {
//         return ArrayUtils.isEmpty(array);
//     }
// }
// 
// Path: src/main/java/com/tkhoon/framework/util/CollectionUtil.java
// public class CollectionUtil {
// 
//     // 判断集合是否非空
//     public static boolean isNotEmpty(Collection<?> collection) {
//         return CollectionUtils.isNotEmpty(collection);
//     }
// 
//     // 判断集合是否为空
//     public static boolean isEmpty(Collection<?> collection) {
//         return CollectionUtils.isEmpty(collection);
//     }
// }


import com.tkhoon.framework.annotation.Impl;
import com.tkhoon.framework.annotation.Inject;
import com.tkhoon.framework.util.ArrayUtil;
import com.tkhoon.framework.util.CollectionUtil;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
                                    beanField.set(beanInstance, implementInstance); // beanInstance 是普通实例，或 CGLib 动态代理实例（不能使 JDK 动态代理实例）
                                }
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            logger.error("初始化 IOCHelper 出错！", e);
        }
    }

    private static Class<?> getImplementClass(Field beanField) {
        // 定义实现类对象
        Class<?> implementClass = null;
        // 获取 Bean 字段对应的接口
        Class<?> interfaceClass = beanField.getType();
        // 通过接口查找唯一的实现类
        return findImplementClass(interfaceClass);
    }

    public static Class<?> findImplementClass(Class<?> interfaceClass) {
        Class<?> implementClass = interfaceClass;
        // 判断接口上是否标注了 @Impl 注解
        if (interfaceClass.isAnnotationPresent(Impl.class)) {
            // 获取强制指定的实现类
            implementClass = interfaceClass.getAnnotation(Impl.class).value();
        } else {
            // 获取该接口所有的实现类
            List<Class<?>> implementClassList = ClassHelper.getClassListBySuper(interfaceClass);
// Path: src/main/java/com/tkhoon/framework/util/ArrayUtil.java
// public class ArrayUtil {
// 
//     // 判断 Array 是否非空
//     public static boolean isNotEmpty(Object[] array) {
//         return ArrayUtils.isNotEmpty(array);
//     }
// 
//     // 判断 Array 是否为空
//     public static boolean isEmpty(Object[] array) {
//         return ArrayUtils.isEmpty(array);
//     }
// }
// 
// Path: src/main/java/com/tkhoon/framework/util/CollectionUtil.java
// public class CollectionUtil {
// 
//     // 判断集合是否非空
//     public static boolean isNotEmpty(Collection<?> collection) {
//         return CollectionUtils.isNotEmpty(collection);
//     }
// 
//     // 判断集合是否为空
//     public static boolean isEmpty(Collection<?> collection) {
//         return CollectionUtils.isEmpty(collection);
//     }
// }


// Path: src/main/java/com/tkhoon/framework/helper/IOCHelper.java
import com.tkhoon.framework.annotation.Impl;
import com.tkhoon.framework.annotation.Inject;
import com.tkhoon.framework.util.ArrayUtil;
import com.tkhoon.framework.util.CollectionUtil;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;

                                    beanField.set(beanInstance, implementInstance); // beanInstance 是普通实例，或 CGLib 动态代理实例（不能使 JDK 动态代理实例）
                                }
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            logger.error("初始化 IOCHelper 出错！", e);
        }
    }

    private static Class<?> getImplementClass(Field beanField) {
        // 定义实现类对象
        Class<?> implementClass = null;
        // 获取 Bean 字段对应的接口
        Class<?> interfaceClass = beanField.getType();
        // 通过接口查找唯一的实现类
        return findImplementClass(interfaceClass);
    }

    public static Class<?> findImplementClass(Class<?> interfaceClass) {
        Class<?> implementClass = interfaceClass;
        // 判断接口上是否标注了 @Impl 注解
        if (interfaceClass.isAnnotationPresent(Impl.class)) {
            // 获取强制指定的实现类
            implementClass = interfaceClass.getAnnotation(Impl.class).value();
        } else {
            // 获取该接口所有的实现类
            List<Class<?>> implementClassList = ClassHelper.getClassListBySuper(interfaceClass);
            if (CollectionUtil.isNotEmpty(implementClassList)) {