有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为每个java对象实例生成唯一字符串

我需要编写一个函数,返回一个字符串,该字符串对于对象的每个状态都应该是唯一的

也就是说,如果任何一个实例变量被更改,那么这个方法应该返回另一个字符串,该字符串对于对象的给定实例变量集应该是唯一的

类似地,我稍后需要编写另一个表示类的唯一静态状态的方法

请提出任何有效的方法来达到我的要求

谢谢, 哈里什


共 (4) 个答案

  1. # 1 楼答案

    我建议你读一读关于物体的书。hashcode()。为hashcode generation推荐的想法可以用于您想要的目的

  2. # 2 楼答案

    一种相当简单的方法是将对象序列化到内存中,并对内容进行安全哈希。效率很低,但它可以用于任何可序列化对象

    具体要求是什么

    • 嵌套对象是否也影响状态(或是否适用)?如果a.b.c发生变化,是否会影响a.b.c的状态
    • 具有相同内容的两个不同对象是否必须以相同的字符串结尾
  3. # 3 楼答案

    如果要跟踪对给定对象状态(在其自身边界中)的更改,只需编写一点代码或采用已实现的方法即可实现。这就是你要问的吗?在您的情况下,使用递增序列号不合适的原因是什么

    如果要保证给定类的所有现有实例之间的唯一性,这有点困难。您可能需要单独区分一个对象,然后询问每个对象其唯一的字符串表示形式

  4. # 4 楼答案

    您可以使用Java反射查找类中的所有字段并从中开始工作:

    public String tos() throws IllegalAccessException {
        StringBuilder b = new StringBuilder();
        for (Field f : getClass().getDeclaredFields()) {
            f.setAccessible(true);
            b.append(f.get(this));
        }
        return b.toString();
    }