diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/AppIdFormatter.java b/core/api/src/main/java/org/onosproject/ui/table/cell/AppIdFormatter.java
index f6ccf2c0..42d684b 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/AppIdFormatter.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/AppIdFormatter.java
@@ -23,7 +23,10 @@
 /**
  * Formats an application identifier as "(app-id) : (app-name)".
  */
-public class AppIdFormatter extends AbstractCellFormatter {
+public final class AppIdFormatter extends AbstractCellFormatter {
+
+    // non-instantiable
+    private AppIdFormatter() { }
 
     @Override
     protected String nonNullFormat(Object value) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/ConnectPointFormatter.java b/core/api/src/main/java/org/onosproject/ui/table/cell/ConnectPointFormatter.java
index 18f7233..fee2615 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/ConnectPointFormatter.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/ConnectPointFormatter.java
@@ -23,7 +23,10 @@
 /**
  * Formats a connect point as "(element-id)/(port)".
  */
-public class ConnectPointFormatter extends AbstractCellFormatter {
+public final class ConnectPointFormatter extends AbstractCellFormatter {
+
+    // non-instantiable
+    private ConnectPointFormatter() { }
 
     @Override
     protected String nonNullFormat(Object value) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellComparator.java b/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellComparator.java
index fa49755..238116a 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellComparator.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellComparator.java
@@ -25,7 +25,10 @@
  * compares the resulting strings. Note that null values are acceptable and
  * are considered "smaller" than any non-null value.
  */
-public class DefaultCellComparator extends AbstractCellComparator {
+public final class DefaultCellComparator extends AbstractCellComparator {
+
+    // non-instantiable
+    private DefaultCellComparator() { }
 
     @Override
     protected int nonNullCompare(Object o1, Object o2) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellFormatter.java b/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellFormatter.java
index 5e4f5ba..0efa2eb 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellFormatter.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellFormatter.java
@@ -22,7 +22,10 @@
 /**
  * A default cell formatter. Uses the object's toString() method.
  */
-public class DefaultCellFormatter extends AbstractCellFormatter {
+public final class DefaultCellFormatter extends AbstractCellFormatter {
+
+    // non-instantiable
+    private DefaultCellFormatter() { }
 
     @Override
     public String nonNullFormat(Object value) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/EnumFormatter.java b/core/api/src/main/java/org/onosproject/ui/table/cell/EnumFormatter.java
index 7060e82..5b89a0b 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/EnumFormatter.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/EnumFormatter.java
@@ -23,7 +23,10 @@
 /**
  * Formats enum types to be readable strings.
  */
-public class EnumFormatter extends AbstractCellFormatter {
+public final class EnumFormatter extends AbstractCellFormatter {
+
+    // non-instantiable
+    private EnumFormatter() { }
 
     @Override
     protected String nonNullFormat(Object value) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/HexFormatter.java b/core/api/src/main/java/org/onosproject/ui/table/cell/HexFormatter.java
index 8104f48..e09982e 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/HexFormatter.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/HexFormatter.java
@@ -22,7 +22,10 @@
 /**
  * Formats integer values as hex strings with a "0x" prefix.
  */
-public class HexFormatter extends AbstractCellFormatter {
+public final class HexFormatter extends AbstractCellFormatter {
+
+    // non-instantiable
+    private HexFormatter() { }
 
     @Override
     protected String nonNullFormat(Object value) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/HostLocationFormatter.java b/core/api/src/main/java/org/onosproject/ui/table/cell/HostLocationFormatter.java
index 9d6024d..fe87c61 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/HostLocationFormatter.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/HostLocationFormatter.java
@@ -23,7 +23,10 @@
 /**
  * Formats a host location as "(device-id)/(port)".
  */
-public class HostLocationFormatter extends AbstractCellFormatter {
+public final class HostLocationFormatter extends AbstractCellFormatter {
+
+    // non-instantiable
+    private HostLocationFormatter() { }
 
     @Override
     protected String nonNullFormat(Object value) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/IntComparator.java b/core/api/src/main/java/org/onosproject/ui/table/cell/IntComparator.java
index ddd90eb..c0d81ec 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/IntComparator.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/IntComparator.java
@@ -24,7 +24,10 @@
  * Note that null values are acceptable and are considered "smaller" than
  * any non-null value.
  */
-public class IntComparator extends AbstractCellComparator {
+public final class IntComparator extends AbstractCellComparator {
+
+    // non-instantiable
+    private IntComparator() { }
 
     @Override
     protected int nonNullCompare(Object o1, Object o2) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/LongComparator.java b/core/api/src/main/java/org/onosproject/ui/table/cell/LongComparator.java
index 3234e50..e8a8986 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/LongComparator.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/LongComparator.java
@@ -24,7 +24,10 @@
  * Note that null values are acceptable and are considered "smaller" than
  * any non-null value.
  */
-public class LongComparator extends AbstractCellComparator {
+public final class LongComparator extends AbstractCellComparator {
+
+    // non-instantiable
+    private LongComparator() { }
 
     @Override
     protected int nonNullCompare(Object o1, Object o2) {
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java b/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java
index e0aec9d..cdfdf3d 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java
@@ -25,10 +25,13 @@
 /**
  * Formats time values using {@link DateTimeFormatter}.
  */
-public class TimeFormatter extends AbstractCellFormatter {
+public final class TimeFormatter extends AbstractCellFormatter {
 
     private static final DateTimeFormatter DTF = DateTimeFormat.longTime();
 
+    // non-instantiable
+    private TimeFormatter() { }
+
     @Override
     protected String nonNullFormat(Object value) {
         return DTF.print((DateTime) value);
