JAVA如何在内部类修改本地变量

描述问题:安卓开发,我想通过按一个按钮,读取当前的时间,通过这个时间选择对应的string字符串,赋值给按钮函数外定义的一个string上
相关代码:
图片说明
报错信息:final的值不可以改变
个人想法: 我确实知道final值不可以改变,但是内部类读取本地变量只能用final,所以我不知道怎么修改本地变量。
在网上查找了资料,都是读取变量,都是用final,没有说到如何修改,谢谢各位大神们指教!

0
hosheazhang
hosheazhang 这段代码我已经把final删除了,如果没有删除,就会报我上述的错误
5 个月之前 回复
扫码支付0.1元 ×
其他相关推荐
内部类中不能引用本地变量,需要声明为常量
Variable is accessed from within inner class ,need to be declared final 解决的办法就是,在这个变量前面加上“final”,让其变为一个常量
内部类与外嵌类
内部类与外嵌类的重要关系如下:1.内部类的外嵌类的成员变量在内部类中依然有效,内部类中的方法也可以调用外嵌类中的方法。2.内部类的类体中不可以声明类变量和类方法,外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。3.内部类仅仅供他的外嵌类使用,其他类不可以用某个类的内部类声明对象。内部类的外嵌类成员变量在内部类中依然有效,是的内部类与外嵌类的交互更加方便。public class exampl...
为什么内部类使用的局部变量必须是final而全局变量可以是no-final
原因在于局部变量和全局变量的区别。 一个全局变量的生命周期伴随该类对象一直存在, 所以可以被内部类所引用。 但是, 一个局部变量的生命周期仅限于方法内部, 而且编译器对它们的处理不一样。 因为内部类隐式复制变量作为它的参数, 如果没有将局部变量声明为final, 则变量一旦被改变, 由于内部类还在引用原始的变量从而导致不易发现的错误。     原文:StackOverflow
在Java内部类中使用外部类的成员方法以及成员变量
http://blog.csdn.net/zhongyili_sohu/article/details/8975947 众所周知,在定义成员方法或者成员变量的时候,可以给其加上一些权限的修饰词,以防止其他类的访问。如在成员变量或者成员方法前面,加上Private关键字,则其他类就无法调用这个类中的成员方法或则和成员变量。但是,如果这个类有成员内部类,则不受这方面的限制。也就是说,在成员内部类中可
内部类中引用的变量必须要声明为final的原因
Cannot refer to a non-final variable mylis inside an inner class defined in a different method 查了下看到有人说原因如下: 局部匿名类在源代码编译后也是要生成对应的class文件的(一般会是A$1.class这种形式的文件),那么这个二进制文件是独立于其外围类(A.clas
类中内部类中的方法访问外部类中变量的示例(转)
lass Day10_11 { public static void main(String[] args) { Outer.Inner oi = new Outer().new Inner(); oi.print(); } } class Outer { public int num = 10; class Inner { public int num = 20; public void pr...
内部类的使用toast
前面的话:当一个类中需要用到一个view的类,而这个类只有这个类自己会去调用,别的类不会去调用时,就可以使用内部类的方法,这样可以使的代码高内聚,低耦合,若别人想用到你这个类时,便可以直接复制这个类,而不需要再添加其他的附加类了。 前面所有set方法,都只是改变变量的值,而在show()方法中定义新建一个内部view类的方法并根据参数的值将view显示出来。 如下: public TMTo
Java 内部类中使用局部变量必须是final
在java中, 方法的内部类可以访问方法中的局部变量,但必须用final修饰才能访问。 原因: 1.当方法被调用运行完毕之后,局部变量就已消亡了。但内部类对象可能还存在, 直到没有被引用时才会消亡。此时就会出现一种情况,就是内部类要访问一个不存在的局部变量。                           2.解决这一问题的办法就是使用final修饰局部变量,通过将fina
黑马程序员 终于明白了一点内部类
------- android培训、java培训、期待与您交流! ---------- 黑马基础测试的时候,有一道题是内部类,之前一直不明白怎么使用,之后看了视频才明白,虽然只会在面试的时候被刁难一下,还是做一点总结吧。 原题:6、 创建一个包含实例内部类的类,外部类中定义一个名为str的String字符串并初始化任意值, * 在内部类中定义跟外部类同种类型且同名的变量, *
Java内部类与外部类之间的参数传递
转自 : http://wendal.net/404.html传入://匿名内部类,只能访问final的本地变量及方法参数 public void addUser(final String name, String passwd, final String userType) { User user = null; if ("admin".equal(userType)) ...
Java内部类访问外部对象为什么必须是final的呢?
为什么必须是final的呢? 一个谜团 如果你用过类似guava这种“伪函数式编程”风格的library的话,那下面这种风格的代码对你来说应该不陌生: 1 2 3 4 5 6 7 8 9 public void tryUsingGuava() { final int expectedLength = 4; Iterables.f
内部类、异常类、异常类
我们已经知道,类可以有两种重要成员:成员变量和方法,实际上,Java还允许类可以又一种成员:内部类。 Java支持在一个类中定义另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类。 内部类和外嵌类之间的重要关系如下: 1、内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。 2、内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声
为什么从内部类中访问局部变量需要被声明为最终类型
      在搞Spring时,有很多方法都用到了回调函数,因而涉及到了更多的内部类,在使用内部类时,发现从内部类中访问局部变量需要被声明为最终类型(final),有些迷惑,找了一些分析文章。如下: 这是从编译器的角度去分析的: class A{public void shout(final   int iargs){class B{public void shout1(){System....
Java内部类的定义及在外部使用的方法
Java内部类的定义及外部使用方法
匿名内部类 ,形参为什么要用final
一、使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪。创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关键字,这是因为匿名内部类是直接使用new来生成一个对象的引用。当然这个引用是隐式的。 pu...
内部类习题9
-
内部类引用外部类的局部变量要用final修饰
为什么内部类引用外部类的局部变量时,此变量要用final修饰 代码 public void test() { final int i = 3; runOnUiThread(new Runnable() { @Override public void run() { mTvShow.s
关于在内部类中启动一个Android Intent的疑惑
在网上看到的所有android例子都是把adapter和listener写在一起,多是内部类的实现方式。我今天想把他们分离开。即adapter和listener写在一个class里面,adapter和listener在同一个class中以内部类形式存在。但是adapter在相关操作上正常,但是listener缺出现启动一个activity时null指针问题。代码如下 在一个JshopAc
匿名内部类及如何访问外部变量
一、java中匿名内部类 1、匿名内部类也就是没有名字的内部类 2、正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 3、但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 二、实现抽象方法不使用匿名内部类与使用匿名内部类比较 不使用匿名内部类: abstract class Person { public abstra
Java 匿名内部类调用局部变量
Java 8 之前,匿名内部类中使用 局部变量,需要强制使用 final 修饰 Java 8 开始匿名内部类使用的外部变量不再被强制用final修饰。 外部变量要么是final的;要么自初始化后值不会被改变 这两种都是可以在匿名内部类中使用且编译通过。 但是 java8只是对‘事实上final’变量可以不声明final标识符而已,其实还是要求final, 参考资料: 1、jav...
类中内部类中的方法访问外部类中变量的示例
class Day10_11 { public static void main(String[] args) { Outer.Inner oi = new Outer().new Inner(); oi.print(); } } class Outer { public int num = 10; class Inner {
javaFx,内部类——《java程序设计语言》
1.首先谈一下javaFx中布局相关,因为学过安卓,所以对于这个javaFx也能理解,主要记忆下面两个图。     2.事件驱动编程   3.内部类 归根到底的问题是作用域问题:Java规范里确实规定了外部类可以访问内部类的private/protected变量,就像访问自己的private/protected变量一样. 类的访问有两种方式类的继承,类的实例化。 成员内...
学习《java程序设计》第七章学习总结
第7章 内部类与异常类 7.1    内部类 Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 内部类的使用规则: –声明内部类如同在类中声明方法或变量一样,一个类把内部类看作是自己的成员。 –外嵌类的类体中可以用内部类声明的对象,作为外嵌类的成员。 –外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。 –内...
内部类、匿名内部类、引用类型用法总结、匿名对象、对象数组、可变参数
内部类 (实际中很少使用,只需了解) 什么是内部类: 在一个类中又写了另外一个类(类中类)。 什么时候使用内部类: 一个事物内部还有一个独立的事物,内部的事物脱离外部的事物无法独立使用。 内部类的分类(按位置划分): 成员内部类:写在类中方法外的类。 局部内部类:写在类中方法中的类。 成员内部类的使用: 1)创建外部类对象。例如: Body  b  =  new ...
Java内部类的this问题
一轮红日映朝阳 首页  标签  搜索  留言 Java内部类的this问题 2011-9-15 16:23:45 在一个风和日丽的下午,码农A写了一个可以获取数据的组件,代码是这样的: package net.gerhut.example.authora; public class Component {
Java(五)-内部类和异常类
内部类(类中套类)在一个类中定义另一个类成为内部类 包含内部类的类称为内部类的外嵌类内部类和外嵌类的关系: 内部类的外嵌类的成员变量和方法在内部类中有效 内部类不可以声明类变量和类方法 内部类仅供它的外嵌类使用 注: 内部类对应的字节码文件格式是“外嵌类名$内部类名” 内部类可以被修饰为static内部类,但不能操作外嵌类的实例成员变量 匿名类(创建对象)是一个子类,不可以用
java嵌套类与内部类
一、嵌套类(Nested Classes) 使用嵌套类减少了命名冲突,一个内部类可以定义在一个类中,一个方法中甚至一个表达式中。 (1)定义 A nested(嵌套) class is any class whose declaration occurs within the body of another class or interface.  A top level class is a c
局部内部类里面的方法如何调用类所在方法里面的变量
如题,如何用print()方法调用m()里面的局部变量int a = 90;public class OuterClass { int a= 30; //成员方法 public void m() { int a = 90; //局部内部类 class InnerClass3{ int a = 80;
在外部类的静态方法中不能创建内部类的实例对象
本来想在static的main方法里面创建这个内部类的对象 idea提示报错 因为内部类的特点就是,内部类持有外部类的引用,可以访问外部类的属性和方法,但是如果是在外部类的静态方法中进行的创建,那么就会有问题,因为外部类的静态方法创建的时候,是不需要外部类对象存在的。 比如说直接 外部类类名.静态方法 这样也可以调用,这个时候外部类并没有实例化,因此内部类就无法拿到外部类的引用。 解决方法,将内...
java--内部类中.this与.new用法
.this   生成对外部类的引用 public class DotThis {     void f(){         System.out.println("DotThis.f()");     }     public class Inner{         public DotThis outer(){             return DotThis.this;      ...
【笔试】内部类中的main方法
问题: main方法是一个程序的主入口,如果一个java文件中有多个main方法(通过内部类实现);会怎么样呢? 测试代码1:   public class TestMain{ public static void main(String[] args){ System.out.println("Main-main"); } } class T{ public static ...
Java内部类(4):为什么方法传递给匿名内部类或局部内部类的参数必须是final的
首先举一个匿名内部类的例子:class Outer{ public Inner getInner(String name){ return new Inner(){ //name = name+" ";编译错误,这里用来示例 public void printf(){ System.out.pri
在一个线程内开启多线程(内部类)消费
与大家分享一种多线程实现异步消费的方式。基本思路是开启一个主线程,在主线程内定义一个内部线程类,开启多个内部线程类进行消费;代码如下(不懂的话可以直接复制代码跑一下): 1、首先有一个启动主线程方法 import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.Tim...
关于成员内部类不能有static修饰的变量和方法问题
看了几篇博客关于一般内部类不能有static修饰的变量,在这里记录一下。问题几种解释如下:1.“if you're going to have a static method, the whole inner class has to be static. Without doing that, you couldn't guarantee that the inner class existed...
java内部类 和外嵌类
/* day in 2015 10 08 night @damon 关于内部类的理解 :java 中支持在一个类中定义内部类,而类本身称为外嵌类 内部类的外嵌类的变量在内部类仍然有效,内部类的类中的方法 也可以调用外部类中的方法。 内部类中不能傻声明类变量和类方法,外嵌类中可以用内部类声明对象 作为外嵌类的成员 内部类仅仅作
关于在内部类中类名.this的使用
在看ArrayList的源码的时候,ArrayList中有一个实现了Iterator接口的内部类Itr,在内部类里,有两个elementData变量,一个是内部类的,昨天的是内部类的局部变量,右边的 是ArrayList的全局变量,由于ArrayList的全局变量elementData与内部类中的elementData重名,所以内部类引用外部类的同名变量时,需要在外部类的全局变量前加上 类名.
内部类访问局部变量时,为什么需要加final关键字
是变量的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要访问这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final。因为虽然匿名内部类在方法的内部,但实际编译的时候,内部类编译成Outer.Inner,这说明内部类所处的位置和外部类中的方法处在同一个等级上,外部类中的方法中的变量或参数只是方法的局部变量,这些变量或参数的作用域只在这个方法内部有效。因为编译的时候内
为什么local inner class可以访问的方法参数必须为final
inner class可以分为三种: 1. 定义在class里的普通inner class. 这种inner class可以访问私有变量. 2. 定义在方法里的local inner class. 这种inner class不仅可以访问私有变量, 而且可以访问所在方法的参数, 但这种参数必须为final. 也就是这篇博客要讨论的情况. 3. 定义在方法里的anonymous inner c...
java 不能引用另一方法中定义的内部类中非终态变量
package com.study; public class Test { public void test01(){ String m = "外部定义的方法"; class Test02{ public Test02() { System.out.println(m); } } } ...
关于Android开发中某个参数遇到了inner class 需要被定义为final
在JVM中,内部类不是直接调用方法的参数,而是内部类将传进来的参数通过自己的构造器备份到了自己的内部,自己内部的方法调用的实际是自己的属性而不是外部类方法的参数。 比如: class A{ final string a="aabbcc"; class B{ print(a); } } 类A中的内部类B的函数print()调用了定义在A中的参数a,这个...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java变量学习 java学习变量