package com.aliyun.odps.type;
import com.aliyun.odps.OdpsType;
/**
* Odps map 类型
*
* Created by zhenhong.gzh on 16/7/8.
*/
class SimpleMapTypeInfo implements MapTypeInfo {
private TypeInfo keyType;
private TypeInfo valueType;
/**
* 创建 odps map 类型
*
* @param keyType
* map 中 key 的类型
* @param valueType
* map 中 value 的类型
*/
SimpleMapTypeInfo(TypeInfo keyType, TypeInfo valueType) {
if (keyType == null || valueType == null) {
throw new IllegalArgumentException("Invalid key or value type for map.");
}
this.keyType = keyType;
this.valueType = valueType;
}
@Override
public String getTypeName() {
return getOdpsType().name() + "<" + keyType.getTypeName() + "," + valueType.getTypeName() + ">";
}
/**
* 获取键的类型
*
* @return 键的类型
*/
@Override
public TypeInfo getKeyTypeInfo() {
return keyType;
}
/**
* 获取值的类型
*
* @return 值的类型
*/
@Override
public TypeInfo getValueTypeInfo() {
return valueType;
}
@Override
public OdpsType getOdpsType() {
return OdpsType.MAP;
}
@Override
public String toString() {
return getTypeName();
}
}