diff options
| author | 2018-01-05 10:59:28 +0000 | |
|---|---|---|
| committer | 2018-01-05 10:59:28 +0000 | |
| commit | e780e8d2b3a1482b54ab56fb37177bf17924d105 (patch) | |
| tree | 4780bad9dd0eacaae3752b4a8385f00fc926a328 | |
| parent | e6c4fdc6fbb0b73667f4e55e9ee3d0396685e5ce (diff) | |
| parent | d20627f50c7ad3f96ddfe44b708711e9ab0e2d6d (diff) | |
Merge "Add createNewItem() to RingBuffer util class."
| -rw-r--r-- | core/java/com/android/internal/util/RingBuffer.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/core/java/com/android/internal/util/RingBuffer.java b/core/java/com/android/internal/util/RingBuffer.java index 9a6e542ccbbd..8fc4c30e54ab 100644 --- a/core/java/com/android/internal/util/RingBuffer.java +++ b/core/java/com/android/internal/util/RingBuffer.java @@ -67,16 +67,21 @@ public class RingBuffer<T> { */ public T getNextSlot() { final int nextSlotIdx = indexOf(mCursor++); - T item = mBuffer[nextSlotIdx]; - if (item == null) { - try { - item = (T) mBuffer.getClass().getComponentType().newInstance(); - } catch (IllegalAccessException | InstantiationException e) { - return null; - } - mBuffer[nextSlotIdx] = item; + if (mBuffer[nextSlotIdx] == null) { + mBuffer[nextSlotIdx] = createNewItem(); + } + return mBuffer[nextSlotIdx]; + } + + /** + * @return a new object of type <T> or null if a new object could not be created. + */ + protected T createNewItem() { + try { + return (T) mBuffer.getClass().getComponentType().newInstance(); + } catch (IllegalAccessException | InstantiationException e) { + return null; } - return item; } public T[] toArray() { |