diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
index b4b7724..89a95e8 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
@@ -132,7 +132,7 @@
      * @param evictor Eviction task to remove
      */
     private static void remove(final BaseGenericObjectPool<?>.Evictor evictor) {
-        for (Entry<WeakReference<Runnable>, WeakRunner> entry : taskMap.entrySet()) {
+        for (final Entry<WeakReference<Runnable>, WeakRunner> entry : taskMap.entrySet()) {
             if (entry.getKey().get() == evictor) {
                 executor.remove(entry.getValue());
                 taskMap.remove(entry.getKey());
@@ -174,7 +174,7 @@
         @Override
         public void run() {
             synchronized (EvictionTimer.class) {
-                for (Entry<WeakReference<Runnable>, WeakRunner> entry : taskMap.entrySet()) {
+                for (final Entry<WeakReference<Runnable>, WeakRunner> entry : taskMap.entrySet()) {
                     if (entry.getKey().get() == null) {
                         executor.remove(entry.getValue());
                         taskMap.remove(entry.getKey());
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java
index af06ac3..0f25913 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java
@@ -89,7 +89,7 @@
             for (int i = 0; i < 10; i++) {
                 try {
                     evictingPool.addObject();
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     e.printStackTrace();
                 }
             }
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index f9d6f91..69dc336 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -1766,7 +1766,7 @@
         assertEquals("Oldest", "0", genericObjectPool.borrowObject());
         assertEquals("Middle", "1", genericObjectPool.borrowObject());
         assertEquals("Youngest", "2", genericObjectPool.borrowObject());
-        String o = genericObjectPool.borrowObject();
+        final String o = genericObjectPool.borrowObject();
         assertEquals("new-3", "3", o);
         genericObjectPool.returnObject(o);
         assertEquals("returned-3", o, genericObjectPool.borrowObject());
