All Downloads are FREE. Search and download functionalities are using the official Maven repository.

holmos.reflect.reflectCheck.HolmosDifferenceVisitor Maven / Gradle / Ivy

package holmos.reflect.reflectCheck;

import holmos.reflect.reflectCheck.difference.HolmosClassDifference;
import holmos.reflect.reflectCheck.difference.HolmosCollectionDifference;
import holmos.reflect.reflectCheck.difference.HolmosCollectionIgnoreOrderDifference;
import holmos.reflect.reflectCheck.difference.HolmosDifference;
import holmos.reflect.reflectCheck.difference.HolmosMapDifference;
import holmos.reflect.reflectCheck.difference.HolmosObjectDifference;

/**
 * @author 吴银龙([email protected])
 * */
public interface HolmosDifferenceVisitor {

    /**
     * 调用对象为普通的对象,访问这个普通或者抽象的对象
     *
     * @param difference 对象的不同的存储地
     * @param argument   一个配置的访问规则
     * @return 访问的结果
     */
    T visit(HolmosDifference difference, A argument);


    /**
     * 调动对象为Object对象
     *
     *@param difference 对象的不同的存储地
     * @param argument   一个配置的访问规则
     * @return 访问的结果
     */
    T visit(HolmosObjectDifference objectDifference, A argument);


    /**
     * 调用对象为Class对象.
     *
     * @param difference 对象的不同的存储地
     * @param argument   一个配置的访问规则
     * @return 访问的结果
     */
    T visit(HolmosClassDifference classDifference, A argument);


    /**
     * 调用对象为Map对象
     *
     *@param difference 对象的不同的存储地
     * @param argument   一个配置的访问规则
     * @return 访问的结果
     */
    T visit(HolmosMapDifference mapDifference, A argument);


    /**
     * 调用对象为Collection对象或者Array对象
     *
     * @param difference 对象的不同的存储地
     * @param argument   一个配置的访问规则
     * @return 访问的结果
     */
    T visit(HolmosCollectionDifference collectionDifference, A argument);


    /**
     * 调用对象为无序集合对象
     *
     *@param difference 对象的不同的存储地
     * @param argument   一个配置的访问规则
     * @return 访问的结果
     */
    T visit(HolmosCollectionIgnoreOrderDifference unorderedCollectionDifference, A argument);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy