StringType in spark SQL:
/**
* The data type representing `String` values. Please use the singleton `DataTypes.StringType`.
*
* @since 1.3.0
*/
class StringType private() extends AtomicType {
// The companion object and this class is separated so the companion object also subclasses
// this type. Otherwise, the companion object would be of type "StringType$" in byte code.
// Defined with a private constructor so the companion object is the only possible instantiation.
private[sql] type InternalType = UTF8String
@transient private[sql] lazy val tag = ScalaReflectionLock.synchronized { typeTag[InternalType] }
private[sql] val ordering = implicitly[Ordering[InternalType]]
...
}
case object StringType extends StringType
рекомендует использовать типы данных:
/**
* To get/create specific data type, users should use singleton objects and factory methods
* provided by this class.
*
*/
public class DataTypes {
/**
* Gets the StringType object.
*/
public static final DataType StringType = StringType$.MODULE$;
- зачем использовать DataTypes.StringType, поскольку StringType сам по себе является одиночным?
- что означает «объект-компаньон и этот класс отделены»?