基础问题:final问题.高手指教!!谢谢!~~

java_seven_net java_seven_net 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是包含匿名内部类的一段代码:

public class test
{
public static void main(String[] args) {
innerB obj=new innerB();   //生成innerB 类对象
(1) Iner obj1=obj.d("gongchang"); //获得接口Iner 的一个引用
obj1.f();           //调用内部类中的f()
(2) obj1=obj.d("wangwei");
obj1.f();
}
}

interface Iner{ public void f( );}   //接口

class innerB              //类innerB
{

String s1="dd";
 
public Iner d(final String s2)    //获取接口引用
{
return new Iner(){ //匿名内部类
public void f()
{
System.out.println(s1);
System.out.println(s2);


}
};
}

}


问题:
1.为什么s2一定要定义为final?如果不是final,会提示:cannot refer to a non-final variable inside an inner class defined in a different method
而s1没有这样的强制要求?
2.既然s2必须是final,也就是赋值之后不能再改变,为什么我可以调用两次(1)(2)?这是不是相当于给s2赋值两次?

请高手解惑!!!谢谢!~~
...全文

相关推荐

java 基础之final、finally和finalize的区别

主要介绍了java 基础之final、finally和finalize的区别的相关资料,需要的朋友可以参考下

weixin_38600460

多模态推荐工具箱实战:从环境搭建到模型训练与调优

多模态推荐系统通过融合图像、文本等异构特征与用户行为序列,提升推荐排序效果。其核心原理是利用预训练模型抽取视觉和文本特征,与协同过滤信号在统一框架中联合建模。技术价值在于解决纯ID类方法语义理解不足的问题,广泛应用于电商、短视频等图文混排场景。工程实践中,环境配置、特征对齐和显存优化是关键挑战。本文以Python和Jupyter Notebook为基础,介绍多模态推荐工具箱的使用,涵盖环境搭建、数据准备、模型训练及常见问题排查,帮助快速复现实验并落地业务。

Msro

【Java语言基础】final关键字

【Java语言基础】final关键字 修饰词:final 最终的最后的 final关键字可用于修饰符,变量和方法,用于表示它修饰的类,方法和方法不可改变。 final 最终的最后的 final修饰变量时,表示该变量一旦获得了初始值之后就不可被改变,final既可修饰成员变量(包括类变量和实例变量),也可以修饰局部变量,形参。 final修饰成员变量 类变量:当类初始化时,系统会为类变量分配内存,并赋默认值。 实例变量:当创建对象时,系统会为该对象的实例属性分配内存,并赋默认值。 final修饰局部变量 可以在定义时指定默认值,则后面代码中不能再对改变量赋值。 如果在定义时没有指定默认值,则可以

weixin_38747025

详解static 和 final 和 static final区别

主要介绍了static 和 final 和 static final区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38665775

终于明白为什么要加 final 关键字了!

作者:guanpj 链接:https://www.jianshu.com/p/acc8d9a67d0c 在开发过程中,由于习惯的原因,我们可能对某种编程语言的一些特性习以为常,特别是只用一种语言作为日常开发的情况。但是当你使用超过一种语言进行开发的时候就会发现,虽然都是高级语言,但是它们之间很多特性都是不太相同的。 现象描述 在  Java 8 之前,匿名内部类在使用外部成员的时候,会报错并提示 “Cannot refer to a non-final variable arg inside an inner class defined in a different method”:

weixin_38632146
评论 11
收藏 已收藏
分享
返回顶部
java_seven_net
Java SE 62,621 成员 307,251 内容