class ShardingValue {

    public ShardingValueType getType() {
        if (null != value) {
            return ShardingValueType.SINGLE;
        }
        if (!values.isEmpty()) {
            return ShardingValueType.LIST;
        }
        return ShardingValueType.RANGE;
    }

    public  ShardingValue(final String logicTableName, final String columnName, final T value);
    public  ShardingValue(final String logicTableName, final String columnName, final Collection<T> values);
    public  ShardingValue(final String logicTableName, final String columnName, final Range<T> valueRange);

}