2021SC@SDUSC
上篇我们讲解了AmendableTuple,本篇继续讲解其他元组
其他元组
AppendableSahemaTuple
ApendableSachemaTuples是一个抽象类,其UML如下
继承关系
public abstract class AppendableSchemaTuple<T extends AppendableSchemaTuple<T>> extends SchemaTuple<T>
继承自SchemaTuple这个也没有接触过,并且该类也没有任何注释,也没有测试函数,由于是抽象类甚至没有构造函数,于是只能大致看一下public的方法
@Override
public void append(Object val) {
if (appendedFields == null) {
appendedFields = mTupleFactory.newTuple();
}
appendedFields.append(val);
}
public SchemaTuple<T> set(List<Object> l) throws ExecException {
int listSize = l.size();
int schemaSize = schemaSize();
if (listSize < schemaSize) {
throw new ExecException("Given list of objects has too few fields ("+l.size()+" vs "+schemaSize()+")");
}
Iterator<Object> it = l.iterator();
generatedCodeSetIterator(it);
resetAppendedFields();
while (it.hasNext()) {
append(it.next());
}
return this;
}
public void set(int fieldNum, Object val) throws ExecException {
int diff = fieldNum - schemaSize();
if (diff >= 0 && diff < appendedFieldsSize()) {
setAppendedField(diff, val);
} else {
super.set(fieldNum, val);
}
}
set函数将 ObjectList里的数据加入到了Tuple中
接下来看看它的父类
SchemaTuple
继承关系
public abstract class SchemaTuple<T extends SchemaTuple<T>> extends AbstractTuple implements TypeAwareTuple {
UML