如何判断字段不会被保存

时间:2017-01-19 13:08:32

标签: java

我有一个类,用于将数据从一个应用程序传输到另一个应用程序,然后在更改时进行更新。

public class Data {
    private String name;
    private String number;
    private String info;

    ... getters/setters...
}

如果您更改了namenumber,我们会更新它们。信息不是。最好的方法是告诉程序员将来这样做是为了让他们能够立即认出来吗?

更新: 它被编码为JSON文件,当我收回它时,我不再关心信息字段了。它可能是空的

5 个答案:

答案 0 :(得分:2)

您可以创建特定于您的应用程序的自定义注释。如果你使用像Hibernate这样的任何框架,你可以使用@transient。

答案 1 :(得分:0)

从这里开始https://docs.oracle.com/javaee/6/tutorial/doc/bnbpz.html

几乎所有选择这样的POJO的程序员都会知道你所解释的行为......

# views.py
from django.views import View

class use_item(View):

    def get(self, request, *args, **kwargs):
        itemname = request.POST.get('value')
        use = getattr(self,itemname)
        use()

    def item1(self,request):
        #do something

    def item2(self,request):
        #do something else

# urls.py
from package.views import use_item

urlpatterns = [
    # [...]
    url(r'^use/item/(?P<topic_id>\d+)/$', use_item.as_view(), name='use_item'),
    # [...]
]

更新: 它被编码为JSON文件,当我收回它时,我不再关心信息字段了。它可能是空的

答案 2 :(得分:0)

可能不是正确的方法,但如果你只是在谈论&#34;通知&#34;其他程序员,您可以简单地将 transient 关键字放在您的信息字段中。

但是,当然,那将是真正的&#34;非正式的&#34 ;;因为它可能根本不会影响你的框架如何处理你的领域。

答案 3 :(得分:0)

我会将序列化与transient关键字结合使用

What is object serialization?

import java.io.*;
import java.util.*;

// This class implements "Serializable" to let the system know
// it's ok to do it. You as programmer are aware of that.
public class SerializationSample implements Serializable {

    // These attributes conform the "value" of the object.

    // These two will be serialized;
    private String aString = "The value of that string";
    private int    someInteger = 0;

    // But this won't since it is marked as transient.
    private transient List<File> unInterestingLongLongList;

答案 4 :(得分:0)

您的文件中没有任何迹象表明namenumber被保留。

如果要以一种持久的方式将行为放入文件中,这不仅仅是一个文件,而是一个对象的表示,其中数据和相关行为是一个整体。写一个澄清意图的方法。

public boolean isStorable() {
    boolean isOk = true;
    isOk &= (name != null && name.length() > 0);
    isOk &= (number > 0);
    return isOk;
}

清楚地表明,并非所有这些项目都能够存储对象,并且并非这些项目中的每个值都有助于存储有效状态。

它还清楚地表明此对象允许其私有数据中的无效状态。这是代码气味,可能表明设计缺陷。也许你应该研究一下这是否是一个设计缺陷,如果是,那就解决它。