首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能在android(Java)中从另一个类更新class的变量?

在Android(Java)中,不能直接从另一个类更新类的变量,是因为Java中的变量有作用域的限制。每个类都有自己的成员变量,其他类无法直接访问另一个类的私有成员变量。

为了实现在不同类之间更新变量的值,可以通过以下几种方式:

  1. 使用Getter和Setter方法:在类中定义公共的Getter和Setter方法,通过调用这些方法来获取和更新变量的值。例如,在要更新的类中定义一个公共的Setter方法,其他类可以通过调用该方法来更新变量的值。
  2. 使用回调函数:在要更新的类中定义一个接口,其他类实现该接口并重写接口方法,在接口方法中更新变量的值。然后,在要更新变量的类中调用这些接口方法,从而实现变量的更新。
  3. 使用广播(Broadcast):在要更新的类中发送广播,其他类注册广播接收器并接收广播,在接收到广播后更新变量的值。这种方式适用于需要在多个类之间传递数据的情况。
  4. 使用全局变量:在一个类中定义一个静态的全局变量,其他类可以直接访问和更新该变量的值。但是,全局变量的使用应该谨慎,因为过多的全局变量可能导致代码的可维护性和可读性降低。

需要注意的是,以上方法都需要在类之间建立适当的关联和通信机制,以确保变量的更新能够正确地传递和处理。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 知识简记:资深架构师带你快速回顾Android各种知识!

双重检查单例,为什么要加 volatile? 1.volatile想要解决问题是,在另一个线程想要使用instance,发现instance!...2.调用静态方法 3.调用静态变量(放入常量池常量除外) 加载器:负责加载 class 文件 分类: 1.引导加载器 - 没有父加载器 2.拓展加载器 - 继承自引导加载器...3.系统加载器 - 继承自拓展加载器 双亲委托模型: 当要加载一个 class 时,会先逐层向上让父加载器先加载,加载失败才会自己加载 为什么叫双亲?...“寒冬未过”,阿里P9架构分享Android必备技术点,让你offer拿到手软! 毕业3年,是如何年薪10W拖拽工程师成为30W资深Android开发者!...腾讯T3大牛带你了解 2019 Android开发趋势及必备技术点! 八年Android开发,码农到架构师分享技术成长之路,共勉! 最后祝大家生活愉快~

85230

字节跳动年前再招聘1W+人,距离大厂 Offer,你还差这篇Android干货!

双重检查单例,为什么要加 volatile? 1.volatile想要解决问题是,在另一个线程想要使用instance,发现instance!...2.方法区信息、常量池 判断一个对象是否可被回收: 1.引用计数法 缺点:循环引用 2.可达性分析法 定义: GC ROOT 开始搜索,不可达对象都是可以被回收 GC ROOT 1.虚拟机栈...:确保该 Class 字节流符合虚拟机要求 3.准备:初始化静态变量 4.解析:将常量池符号引用替换为直接引用 5.初始化:执行静态块代码、变量赋值 加载时机: 1.实例化对象 2.调用静态方法...3.调用静态变量(放入常量池常量除外) 加载器:负责加载 class 文件 分类: 1.引导加载器 - 没有父加载器 2.拓展加载器 - 继承自引导加载器 3.系统加载器 - 继承自拓展加载器...以上内容均放在了开源项目:【github】 已收录,里面包含不同方向自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新...

68100

Android常见问题及开发经验总结(四)

android做适配时,会将不同大小图片放在不同目录,为什么直接将一张最大图片放在drawable-xxhdpi目录下?...static变量可以在程序中使用吗?有什么问题? 很多同学喜欢用static变量,可以在不同包和调用,省传来传去。...这个建议使用,因为 一是有被回收危险,导致值为空,二是会有值需要清理问题。 什么意思呢?这个说来话长 ,简单来说 是因为静态变量一样都是在进程加载时候被加载,在进程结束时候被结束。...所以本人建议程序中大量使用static变量android开发数据库使用场景有哪些呢?...Android 开发过程 常用设计模式都有哪些? 1)单例模式   2)观察者模式 这两个是最多

39130

面试官:Android程序员,经常遇到背题,一问原理就露馅了

到子类对static成员进行初始化。 ④超成员变量按顺序初始化,递归调用超构造方法。 ⑤子类成员变量按顺序初始化,子类构造方法调用。...为什么 wait,notify 和 notifyAll 是在 Object 定义而不是在 Thread 定义 这是有名 Java 面试问题,招2~4年经验到高级 Java 开发人员面试都可能碰到...面试经验来看,wait 和 nofity 仍然是大多数Java 程序员最困惑,特别是2到3年开发人员,如果他们要求使用 wait 和 notify, 他们会很困惑。...每个对象都可上锁 ,这是在 Object 而不是 Thread 声明 wait 和 notify 另一个原因。...请记住,在 Java ,所有在另一个线程执行侵入操作都被弃用了(例如 stop 方法)。 最后 感谢大家能耐着性子看完啰里啰嗦文章,除了文章内还有很多面试题私藏。

92820

10个最难回答Java面试题

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层级都是_可序列化_中继续, 即:实现了可序列化接口, 如果超级没有实现可序列化接口,则超级继承实例变量值将通过调用构造函数初始化。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...为什么要等待来自 Java synchronized 方法 wait方法为什么必须 Java synchronized 块或方法调用 ?...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。

78520

探索 Java 隐藏开销--私有方法调用莫瞎写

SDK ,有一个工具叫做dx,它完成dexing,这使得 Java class 文件变成 Android Dalvik 二进制码。...这是因为,即使我们声明它,Example 也是继承于 Object 。 每一个构造函数都会调用它构造函数。 它是自动插入。这意味着我们 class 流中有两个方法。...一个嵌套在另一个里面。如果我们编译它,我们能在文件系统中看到两个独立 class 文件。 如果 Java 真的有内嵌,我们就应该只能看到一个 class 文件。...这有意义,因为我们需要一个作用域到里调用它私有方法途径。 Java 会合成一个包作用域方法来帮助实现这个函数调用。...我们能够增加方法,我们能更新另一个,然后引用它。 dex 文件有方法限制,所以当你有这些因为你编写源文件方式不同,而导致必须要添加新方法加的话,这些函数个数都是计算在内

61820

90%Java程序员不会10道Java面试题

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

99200

挑战10个最难回答Java面试题(附答案)

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

1.4K40

挑战 10 道超难 Java 面试题

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

71320

Java 大牛看过来,挑战10道超难 Java 面试题!

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

70031

挑战 10 道超难 Java 面试题

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

66820

史上最难10道 Java 面试题!

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

82830

10 大 Java面试难题,打趴无数面试者!

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

1.7K21

听说这10道Java面试题90%的人都不会!!!

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

62320

最新 Android 面试点梳理,收藏了你呢?

,保持变量可见性 双重检查单例,为什么要加 violate?...2.方法区信息、常量池 判断一个对象是否可被回收: 1.引用计数法:有循环引用缺点 2.可达性分析法: GC ROOT 开始搜索,不可达对象都是可以被回收。...对象 2.验证:确保该 Class 字节流符合虚拟机要求 3.准备:初始化静态变量 4.解析:将常量池符号引用替换为直接引用 5.初始化:执行静态块代码、变量赋值 加载时机:1.实例化对象 2....调用静态方法 3.调用静态变量(放入常量池常量除外) 加载器:负责加载 class 文件 1.引导加载器 - 没有父加载器 2.拓展加载器 - 继承自引导加载器 3.系统加载器 -...继承自拓展加载器 双亲委托模型: 当要加载一个 class 时,会先逐层向上让父加载器先加载,加载失败才会自己加载 为什么叫双亲?

69421

挑战 10 道超难 Java 面试题

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。...IDE将显示警告:"静态方法应该使用名而不是使用对象来调用", 因为静态方法不能在Java重写。 这些是核心Java面试问题和答案清单。

72510

Android 基础面试常常吊死在这几个问题上……

Android面试常常吊死问题 1、面试官:Context它是什么,有什么用? 2、面试官:什么是Armv7? 3、面试官:为什么字节码不能在Android运行?...8、面试官:为什么要在ActivityonCreate() 执行setContentView()? 9、面试官:说一下Android几种启动模式吧!他们分别是干什么?...3、面试官:为什么字节码不能在Android运行? 应聘者:Android 使用是 DVM ( Dalvik 虚拟机)而不是 JVM ( Java 虚拟机)。 面试官:不错,答上来了!...第二步:通过javac将Java源代码编译为 .class 文件,然后通过 sdk “工具”包含“ dx” 工具将文件转换为 Dalvik 字节码。输出为 classes.dex 。...可以将变量声明为 transient 来禁止序列化。 可序列化是标准 Java 接口。Parcelable 是 Android 专用界面,可以在其中自行实现序列化。

2K20

来一场Java高级面试,看看自己啥水准

问题 6) 如果类是可序列化, 但其超不是, 则反序列化后超级继承实例变量状态如何?...Java 序列化过程仅在对象层次都是可序列化结构中继续, 即实现 Java 可序列化接口, 并且超级继承实例变量值将通过调用构造函数初始化, 在反序列化过程不可序列化超级。...瞬态变量包含在 Java 序列化过程, 并且不是对象序列化状态一部分。...图片.png 为什么要等待来自 Java synchronized 方法 wait方法为什么必须 Java synchronized 块或方法调用 ?...,你不能在Java覆盖静态方法,但在子类声明一个完全相同方法不是编译时错误,这称为隐藏在Java方法。

1K10
领券