Java: design problem with final-value and empty constructor

Posted by HH on Stack Overflow See other posts from Stack Overflow or by HH
Published on 2010-04-12T02:57:54Z Indexed on 2010/04/12 13:43 UTC
Read the original article Hit count: 382

$ javac InitInt.java 
InitInt.java:7: variable right might not have been initialized
 InitInt(){}
           ^
1 error
$ cat InitInt.java 
import java.util.*;
import java.io.*;

public class InitInt {
 private final int right;

    // Design Problem?
    // I feel the initialization problem is just due to bad style.

 InitInt(){}
    InitInt{
           // Still the error, "may not be initialized"
           // How to initialise it?

            if(snippetBuilder.length()>(charwisePos+25)){
                    right=charwisePos+25;
            }else{
                    right=snippetBuilder.length()-1;
            }
    }

 public static void main(String[] args) {
  InitInt test = new InitInt(); 
  System.out.println(test.getRight());
 }
 public int getRight(){return right;}
}

Partial Solutions and Suggestions

  1. use "this" to access methods in the class, instead of creating empty constructor
  2. change final to non-final
  3. with final field value: initialize all final values in every constructor
  4. remove the empty constructor, keep your code simple and clean

© Stack Overflow or respective owner

Related posts about java

Related posts about initialization