在Java中有可能创建一个所有字段都可观察的类吗?

时间:2019-02-22 13:19:46

标签: java rx-java reactive-programming rx-android android-livedata

我目前正在学习Java(适用于Android)的反应式编程。

我使用Livedata监听字段中的更改。

但是我有一个问题。每当模型类中的字段更新时,是否可以触发监听器?

即,

  • 更新类字段时,必须触发一个监听器
  • 该侦听器必须返回更新的对象

好的。让我详细解释

场景 想象一些模型类

class Student 
{
String name ;
int age;
int rollno;
Sports sports ;
}


class Sports 
{
 String sportName;
 int score;
}

现在这是我的需要。

  

当我更新Student类的object中的字段时,然后是一个侦听器   必须触发返回学生的更新对象   课

例如

如果我将名称更新为stdobj.name = "Lords",则必须触发一个侦听器,该侦听器将返回更新后的对象,像这样

....
public void onUpdated (Student student)
{
...
}

如果我将age字段更改为stdobj.age = 25,则必须触发一个侦听器,该侦听器将返回更新的对象

注意
当运动对象也更新时,还必须触发侦听器 stdobj.sports = new Sports (....)

我以前的作品

我使用了Observable interface and BaseObservable

  

但是我需要为每个添加notifypropertychaged(<field_name>)   每个变量。

如果模型类具有100个变量,该怎么办。加100 notifypropertychaged(<field_name>)是一件很痛苦的事情。

MutableLiveData也发生了同样的事情。我不得不将所有字段都转换为livedata对象,还需要为这些livedata对象创建一个单独的观察器

  

因此,上述解决方案对我而言并不完美。我需要一些东西   一次执行即可自动观察所有字段。

类似以下内容:

class Student extends FieldsObserver<Student> 
{
...
...

@Override
public void onFieldChanged (Student student)
{
...
...
}

或这样

FieldChangedObserver observer = ...;

observer.observe(stdobj, new OnFieldChangedListener() 
  {
    public void onFieldChanged (Student student)
       {
       ....
       }
  });

这是我的需要。请告诉解决方法

0 个答案:

没有答案