com.holmos.reflect.reflectCheck.HolmosDifferenceVisitor Maven / Gradle / Ivy
package com.holmos.reflect.reflectCheck;
import com.holmos.reflect.reflectCheck.difference.HolmosClassDifference;
import com.holmos.reflect.reflectCheck.difference.HolmosCollectionDifference;
import com.holmos.reflect.reflectCheck.difference.HolmosCollectionIgnoreOrderDifference;
import com.holmos.reflect.reflectCheck.difference.HolmosDifference;
import com.holmos.reflect.reflectCheck.difference.HolmosMapDifference;
import com.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);
}