final使用

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

final修饰方法,则该方法不可被重写。(@override)

final修饰类,则不可被继承。(extends)

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 修饰。

有时候我们再Java的方法里把参数定义为final主要原因如下:

1、给方法内的匿名内部类访问

作为一个正式的方法参数是一个局部变量,只有当它们被声明为final时,才可以从内部匿名类访问它们。这样可以避免在方法体中声明另一个本地最终变量。

2、如果参数是引用,可以防止方法内意外的修改了该引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值