[ https://issues.apache.org/jira/browse/HBASE-9359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13752906#comment-13752906 ]
Jonathan Hsieh commented on HBASE-9359: --------------------------------------- Yup, I'm pretty convinced that preGet and postGet must be List<Cell> and not List<? extends Cell>. If we have it as a List<? extends Cell> we get into co/contra variance problems -- we can read the elements out of the list, but when we cannot put things in in a typesafe way. Suppose we don't know if the list is List<KeyValue> or List<Cell> (the case with <? extends Cell>), Lets say it was actually a List<KeyValue> and we were able to put in some non KeyValue derived Cell. The calling code, knowing the list is a List<KeyValue> would attempt to read values out of the list and and interpret them as KeyValue. This would be a type error causing runtime barf since it was some other Cell. By having it as a List<Cell> we can read and write in elements that are subclasses of Cell as long as we only use the Cell interface. > Convert KeyValue to Cell in hbase-client module - Result/Put/Delete, > ColumnInterpreter > -------------------------------------------------------------------------------------- > > Key: HBASE-9359 > URL: https://issues.apache.org/jira/browse/HBASE-9359 > Project: HBase > Issue Type: Sub-task > Components: Client > Affects Versions: 0.95.2 > Reporter: Jonathan Hsieh > Assignee: Jonathan Hsieh > Attachments: hbase-9359.patch > > > This path is the second half of eliminating KeyValue from the client > interfaces. This percolated through quite a bit. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira