summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-01-05 10:59:28 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-01-05 10:59:28 +0000
commite780e8d2b3a1482b54ab56fb37177bf17924d105 (patch)
tree4780bad9dd0eacaae3752b4a8385f00fc926a328
parente6c4fdc6fbb0b73667f4e55e9ee3d0396685e5ce (diff)
parentd20627f50c7ad3f96ddfe44b708711e9ab0e2d6d (diff)
Merge "Add createNewItem() to RingBuffer util class."
-rw-r--r--core/java/com/android/internal/util/RingBuffer.java23
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() {