javaconstructorsuper

java calling method before super


Assuming I have a super class that has 3 parameters in it's constructor and i am inheriting this class that also has a constructor with 3 parameters, and I want to call the super class constructor but before I want to do some logic on the sub class first, I can call a static method that receives those 3 parameters but I have to return only one, so this is the solution I came up with

public class someClass extends  SuperClass {
    public someClass(int a,int b,int c) {
         super(func(a,b,c),b,c);
    }
    public static int func(int a,int b,int c){
        //usage a b c
        return a;
    }
}

It seems a bit ugly and I was wondering if there is a better solution to use the parameters myself and then call super regularly. Note that i cannot change the Super class or that usages of the sub classes and therefore factory Design Pattern


Solution

  • To get the logic out of your constructor, you can easily create a factory method in your subclass:

    public class SomeClass extends SuperClass {
        private SomeClass(int a, int b, int c) {
            super(a, b ,c);
        }
    
        public static SomeClass create(int a, int b, int c) {
            // calculate a for constructor
            
            return new SomeClass(a, b, c);
        }
    }
    

    Then you can create instances as follows:

    SomeClass someClass = SomeClass.create(1, 2, 3);