你能从一个通用类型的对象中覆盖一个函数吗?

Can you override a function from a generically typed object?

我在 Java 中有一个 class,它在 HashMap 中存储通用 Object 类型:

private final Map<Object, NetworkMarker> packetMarker = new WeakHashMap<>();

packet 对象非常大,映射具有非常高的吞吐量,因此仅对数据包进行哈希处理就占用了荒谬的 cpu 周期,我很好奇是否可能尽量减少这种情况,或者我只需要更好的硬件。

尽管是一个没有包装器的通用对象 class,是否有一种方法可以覆盖 hashCode 函数以使其更高效,或者可以扩展哈希图以增强 #get() 方法?或者我忽略的任何其他方法!

干杯!

编辑澄清:packet 对象未键入。它的类型是Object。它是从外部源传入的,所以我无法分配类型。

您总是可以将其包装在另一个缓存哈希码的 class 中:

class CachedHash {
    public final Object cached;
    private Integer hashCode;

    public CachedHash(Object cached) {
        this.cached = cached;
    }

    @Override
    public boolean equals(Object o) {
        return cached.equals(o);
    }

    @Override
    public int hashCode() {
        if (hashCode == null) {
            hashCode = cached.hashCode();
        }
        return hashCode;
    }
}