gpt4 book ai didi

java - 确定通用类型

转载 作者:行者123 更新时间:2023-12-01 23:12:57 25 4
gpt4 key购买 nike

我正在编写一个通用缓存,它可以暂时保存位图和字符串,以便我可以在不同的加载器中使用它。

public class Cache<T> {}

有时我必须计算对象的大小:

private long getSize(T t)
{
if (t == null) return 0;
if (t instanceof Bitmap) return ((Bitmap)t).getRowBytes() * ((Bitmap)t).getHeight();
if (t instanceof String) return ((String)t).getBytes().length;
return 0;
}

我现在就是这样做的。我想知道这是否正确,是否有更好的方法(例如多态类型确定)来做到这一点?

--- 编辑 ---------------------------------------

我想出了另一种方法,它声明 getItemSize 抽象。因此,每个加载器都可以使用所需的 getItemSize 从基本缓存扩展自己的缓存。

class BitmapCache extends Cache<Bitmap>
{
@Override
public long getSize(Bitmap bitmap)
{
if (bitmap == null) return 0;
return bitmap.getRowBytes() * bitmap.getHeight();
}
}

最佳答案

如果您计划实现更多的类,而不是重复检查 instanceof,您应该使用具有 getSize() 方法的包装类,或者它是相似。

public interface DataWrapper {

public long getSize();

}

//...

private <T extends DataWrapper> long getSize(T t) {
return t.getSize();
}

// or even just
yourGeneric.getSize();

关于java - 确定通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com