JavaFX技巧来节省内存! 属性和可观察物的阴影场

本文探讨了在JavaFX中如何使用属性API可能导致内存消耗,并介绍了一种称为'阴影字段'的技术来节省内存。通过接口和默认方法,实现了访问实际值或属性包装器的智能方式,减少了样板代码,简化了Employee类的设计。尽管可能在某些场景下影响序列化,但这种方法为大多数JavaFX应用提供了更简洁的解决方案。
摘要由CSDN通过智能技术生成

JavaFX的世界中, Properties API允许UI开发人员将值绑定到UI控件。 这种功能非常容易,但是当对象模型经常使用属性时,应用程序可能会很快耗尽内存。 我通常会编写两个单独的对象,例如pojo类和表示模型对象。 此技术通常在基于Swing的应用程序中使用。 从JavaFX角度来看,您可以只创建一个具有属性的对象,以允许观察者(侦听器)更新值。 听起来不错吧? 不完全是因为主要问题是当所有对象的(pojo)属性(字段)都是还包装实际值的属性时,程序员(api的用户)可能根本不想绑定或使用属性,而只想访问实际值。 那么,JavaFX开发人员该做什么?

一个TreeTable控件持有雇员。

一个TreeTable控件持有雇员。

我经常访问Dirk Lemmermann的博客Pixel Perfect ,该博客经常发布非常有用的JavaFX技巧。 最近,Dirk在博客上发表了一篇关于如何使用一种有趣的模式“ Shadow Fields ”来节省内存的博客。 要查看他的帖子,请访问他的博客条目JavaFX Tip 23:节省内存! 属性的阴影字段。 。 Dirk的JavaFX技巧确实有助于解决上述问题(减少堆),但是我注意到必须存在样板代码才能( 聪明地 确定 )为调用者提供返回值是实际对象还是属性包装器对象。 例如,该代码将返回intInteger值,而不是在调用ge

JavaFX 属性是一种特殊的字段,可以在属性值发生变化时自动更新视图。JavaFX 属性有以下几个特点: 1. 可观察性:JavaFX 属性是可观察的,可以注册监听器来监听属性值的变化。 2. 绑定性:JavaFX 属性可以绑定到其他属性或表达式上,当被绑定的属性或表达式的值发生变化时,绑定属性的值也会随之变化。 3. 可写性:JavaFX 属性可以是可写的或只读的,可写属性的值可以通过 set 方法来修改,只读属性的值只能在创建时指定,之后不可修改。 4. 类型安全:JavaFX 属性具有类型安全性,因为属性的类型是在编译时确定的。 以下是一个简单的 JavaFX 属性示例: ``` import javafx.beans.property.*; public class Person { private StringProperty name = new SimpleStringProperty(); private IntegerProperty age = new SimpleIntegerProperty(); public String getName() { return name.get(); } public void setName(String name) { this.name.set(name); } public StringProperty nameProperty() { return name; } public int getAge() { return age.get(); } public void setAge(int age) { this.age.set(age); } public IntegerProperty ageProperty() { return age; } } ``` 在上面的示例中,Person 类具有两个 JavaFX 属性:name 和 age。name 属性是一个字符串属性,age 属性是一个整数属性。这些属性都具有 get 和 set 方法,以及对应的属性对象(nameProperty 和 ageProperty)。可以使用属性对象来注册监听器、绑定属性和获取属性值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值