Best Ways to Java Generic Naming Convention, Rules, Examples


In this post, We will learn what are the naming conventions rules for Generic type parameters. Many people might have seen that Generic typ...

In this post, We will learn what are the naming conventions rules for Generic type parameters. Many people might have seen that Generic types are heavily used in Java Collection api such as ArrayList, HashSet, HashMap.

Best Ways to Java Generic Naming Convention, Rules, Examples

Generics types are should be enclosed in Diamond operator.

Learn Generics in Java.

Naming Conventions Rules:

1) Generic type should be in UPPER case. This makes us easily identification to it.
2) The following are the predefined as described in java official documentation.
   E - "E" is the Parameter type name which describes that Element (Extensively used in Java Collection api)
3) K - Represents Key and used in HashMap as key.
4) V - Represents Value and used in HashMap as value.
5) N - Represents number representation.
6) Generics supports for single and multi parameter generic declaration.
   T - Represents type, Used as first generic parameter to the class. This can be user defined or inbuilt api classes.
7) S - To represent the second generic type parameter.
8) U - To represent the third generic type parameter.
9) V - To represent the fourth generic type parameter.

Example for "T" type generic class:

package com.adeepdrive.generics;

public class TypeTExample 
    public static void main(String[] args) 
        // House takes String as generic type. Which is valid
        House<String> name = new House<String>();
        System.out.println("House Name :: " + name.getT());

        // House takes Integer as generic type. Which is valid
        House<Integer> number = new House<Integer>();
        number.setT(new Integer("333"));
        System.out.println("House Number :: " + number.getT());
        // House takes Long as generic type. Which is valid
        House<Long> housePhoneNumber = new House<Long>();
        housePhoneNumber.setT(new Long("110814673"));
        System.out.println("House Phone Number :: " + housePhoneNumber.getT());

// Created a class which takes single generic type. Here, we can pass any class
// while creating House instance.
class House<T> {
    T t;
    public T getT() {
        return t;
     public void setT(T t) {
       this.t = t;


House Name :: ADeepDrive
House Number :: 333
House Phone Number :: 110814673

In this example, we have created a generic class House and used "T" as type name. It accepts any class passing to it. We passed here String, Integer, Long.
While creating instance for generic class, we can not pass primitive types. For primitive types, we should use valid only Wrapper class.

name, number, housePhoneNumber object creations are absolutely fine and no compile errors. Runs fine.

Example for "K", "V" types:

package com.adeepdrive.generics;

public class TypeKVExample {
    public static void main(String[] args) {

        KeyValuePair<Integer, String> pair1 = new KeyValuePair(new Integer(1), "One");
        System.out.println("Pair 1: key = " + pair1.getKey() + ", value = " + pair1.getValue());

        KeyValuePair<String, Float> pair2 = new KeyValuePair<String, Float>("Two", new Float("14.5"));
        System.out.println("Pair 2: key = " + pair2.getKey() + ", value = " + pair2.getValue());

// Generic class that takes K, V types.
class KeyValuePair<K, V> {

    K key;
    V value;

    public KeyValuePair(K key, V value) {
        this.key = key;
        this.value = value;

    public K getKey() {
        return key;

    public V getValue() {
        return value;


Pair 1: key = 1, value = One
Pair 2: key = Two, value = 14.5

In TypeKVExample class, we have created a class KeyValuePair with two generic types K, V. First is for key and second is for value. In main method, created two instances for KeyValuePair as pair1, pair2. These two are valid. No exception while executing.

Invalid case:

If we do the following then it compiles fine but during runtime, will throw  ClassCastException. Because constructor takes any class for key and value.

KeyValuePair<String, Float> pair3 = new KeyValuePair(new Integer(1), "One"); // valid
     System.out.println("Pair 3: key = " + pair3.getKey() ); // RuntimeException


Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String       

This is not caught in the compile time. If, we want it to be captured at compile then we should do the following.

KeyValuePair<String, Float> pair3 = new KeyValuePair<String, Float>(new Integer(1), "One");

Mentioned types to the constructor which checks during compile time rather than run-time.



About Us

Author: Venkatesh - I love to learn and share the technical stuff.

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
JavaProgramTo.com: Best Ways to Java Generic Naming Convention, Rules, Examples
Best Ways to Java Generic Naming Convention, Rules, Examples
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content