How do I call one constructor from another in Java?

前端 未结 21 2486
不知归路
不知归路 2020-11-22 01:06

Is it possible to call a constructor from another (within the same class, not from a subclass)? If yes how? And what could be the best way to call another constructor (if th

21条回答
  •  你的背包
    2020-11-22 01:18

    Using this(args). The preferred pattern is to work from the smallest constructor to the largest.

    public class Cons {
    
        public Cons() {
            // A no arguments constructor that sends default values to the largest
            this(madeUpArg1Value,madeUpArg2Value,madeUpArg3Value);
        }
    
        public Cons(int arg1, int arg2) {
           // An example of a partial constructor that uses the passed in arguments
            // and sends a hidden default value to the largest
            this(arg1,arg2, madeUpArg3Value);
        }
    
        // Largest constructor that does the work
        public Cons(int arg1, int arg2, int arg3) {
            this.arg1 = arg1;
            this.arg2 = arg2;
            this.arg3 = arg3;
        }
    }
    

    You can also use a more recently advocated approach of valueOf or just "of":

    public class Cons {
        public static Cons newCons(int arg1,...) {
            // This function is commonly called valueOf, like Integer.valueOf(..)
            // More recently called "of", like EnumSet.of(..)
            Cons c = new Cons(...);
            c.setArg1(....);
            return c;
        }
    } 
    

    To call a super class, use super(someValue). The call to super must be the first call in the constructor or you will get a compiler error.

提交回复
热议问题