到底什么时候需要使用 final

final:

final修饰属性,则该属性不可再次改变,而且在初始化中必须在属性或者是构造方法中其中且中有一个中初始化他

final修饰方法,则该方法不可被重写

final修饰类,则不可被继承

1:当内部类需要引用外部类的局部变量或者是传入的参数时那么该变量必须被定义为final:防止该变量在内部类和外部类表现为两个变量的情况发生,防止内部类对引用的变量进行重定向。

public class HttpUtils {
    public static void getNewsJSON(final String url){
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection con=null;
                con=(HttpURLConnection) new URL(url).openConnection();
                
            }
        }).start();
    }
    public HttpUtils() {
        // TODO Auto-generated constructor stub
    }

}

在这里如果不把url定义为final那么就会认为在内部中的url和外部类的参数不是同一个

2 其他情况:当你不让别人继承一这个类的时候, 用final 修饰该类. 当一个方法不想让别人重写的时候可以把这个方法用final修饰. 当定义一个常量的时候可以用final 修饰

原文地址:https://www.cnblogs.com/zzy-frisrtblog/p/5367340.html