@Override
    public boolean equals(Object obj) {
        // #lizard forgives
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (this.getClass() != obj.getClass()) {
            return false;
        }
        TopicMetadata other = (TopicMetadata) obj;
        if (this.acceptPublish != other.acceptPublish) {
            return false;
        }
        if (this.acceptSubscribe != other.acceptSubscribe) {
            return false;
        }
        if (this.dataPath == null) {
            if (other.dataPath != null) {
                return false;
            }
        } else if (!this.dataPath.equals(other.dataPath)) {
            return false;
        }
        if (this.deletePolicy == null) {
            if (other.deletePolicy != null) {
                return false;
            }
        } else if (!this.deletePolicy.equals(other.deletePolicy)) {
            return false;
        }
        if (this.deleteWhen == null) {
            if (other.deleteWhen != null) {
                return false;
            }
        } else if (!this.deleteWhen.equals(other.deleteWhen)) {
            return false;
        }
        if (this.numPartitions != other.numPartitions) {
            return false;
        }
        if (this.topic == null) {
            if (other.topic != null) {
                return false;
            }
        } else if (!this.topic.equals(other.topic)) {
            return false;
        }
        if (this.unflushInterval != other.unflushInterval) {
            return false;
        }
        if (this.unflushThreshold != other.unflushThreshold) {
            return false;
        }
        if (this.unflushDataHold != other.unflushDataHold) {
            return false;
        }
        if (this.statusId != other.statusId) {
            return false;
        }
        if (this.numTopicStores != other.numTopicStores) {
            return false;
        }
        if (this.memCacheMsgSize != other.memCacheMsgSize) {
            return false;
        }
        if (this.memCacheMsgCnt != other.memCacheMsgCnt) {
            return false;
        }
        if (this.memCacheFlushIntvl != other.memCacheFlushIntvl) {
            return false;
        }
        if (this.maxMsgSize != other.maxMsgSize) {
            return false;
        }
        if (this.minMemCacheSize != other.minMemCacheSize) {
            return false;
        }

        return true;
    }
Build TopicMetadata by default topic meta and the special field values.

@param brokerDefMetadata    the default topic meta configure
@param topicName            the topic name
@param numTopicStores       the topic store count
@param numPartitions        the topic partition count
inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/metadata/TopicMetadata.java