[ 
https://issues.apache.org/jira/browse/ARROW-1361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16142858#comment-16142858
 ] 

Jacques Nadeau commented on ARROW-1361:
---------------------------------------

I was suggesting something along:

- we make Field into Field<T extends ArrowType>. 
- Field's getType() would change to a return type of T
- ValueVector would return Field<? extends ArrowType> 
- Each individual vector would return a specific field generic type.

For example,

class NullableTimeStampMicroTZVector {
  Field<Timestamp> getField(){..}
}

Given declaration
NullableTimeStampMicroTZVector t = <>;

Then
TimeUnit.MICROSECOND == t.getField().getType().getUnit() would compile without 
any special casting and return true.

I find this a much easier thing to code to (especially if using code 
generation) as opposed to having specialized method names for each type.

I haven't thought through all the ramifications of this approach but was 
throwing it out there.

> [Java] Add minor type param accessors to NullableValueVectors
> -------------------------------------------------------------
>
>                 Key: ARROW-1361
>                 URL: https://issues.apache.org/jira/browse/ARROW-1361
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: Java - Vectors
>            Reporter: Bryan Cutler
>            Assignee: Bryan Cutler
>
> A {{NullableValueVector}} creates private copies of each param in the minor 
> type, but does not have any way public api to access them.  So if given a 
> {{NullableValueVector}} you would have to use the {{Field}} and cast to the 
> correct type.  For example, with a {{NullableTimeStampMicroTZVector}} and 
> trying to get the timezone:
> {noformat}
> if field.getType.isInstanceOf[ArrowType.Timestamp] &&
>           field.getType.asInstanceOf[ArrowType.Timestamp].getTimezone
> {noformat}
> It would be more convenient to have direct accessors for these type params.  
> Also, it is possible to do some minor refactoring because 
> {{NullableValueVectors}} does not use these type params, so there is no need 
> to store them.  They already exist in the inner vector object and the Field 
> type.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to