有没有办法找到泛型的类类型?
if (T instanceof String) {
// do something...
}
以上内容绝对无法编译。
泛型是编译时功能。泛型在编译时添加检查,这在运行时可能没有任何意义。这是一个例子。您只能检查所引用对象的类型,它可能是代码中的超级类型。如果要传递类型T,则必须明确地执行此操作。
void someMethod(Class<T> tClass) {
if(String.class.isAssignableFrom(tClass))
要么
void someMethod(Class<T> tClass, T tArg) {
注意:类型可能不相同,
someMethod(Number.class, 1);
问题内容: 好的,我一直在Google搜索网络,但似乎找不到解决我问题的任何方法。我找到了很多解决方案,但都不合适。 我需要创建一个泛型数组。但是泛型类型本身扩展了Comparable。当我尝试以下操作时: 问题在于对象不能转换为扩展Comparable的泛型。有没有解决的办法? 问题答案: 泛型和数组基本上不混合。简短的答案是你可以解决此问题。较长的答案是你可能不应该这样做,我将解释原因。 你可
问题内容: 我有一种从服务读取JSON的方法,我正在使用Gson进行序列化,并使用类型参数编写了以下方法。 我正在使用json,它仅返回一个类型数组,例如 我有一个映射到该对象的java类,我们称之为MyClass。但是,要使用我的方法,我需要这样做: 但是,我无法弄清楚这样做的语法。仅传递ArrayList.class不起作用。 因此,有什么方法可以摆脱Class参数,或者如何获取MyClass
问题内容: 在以下情况下,我遇到了仿制药的问题,请参见以下内联注释,以了解我的问题: 问题答案: //Intuitively I would expect this to mean that test is set containing objects //that subclass AbstractGroup Set<? extends AbstractGroup> test; 不,这意味着它是
问题内容: 帮我了解泛型。说我有两个枚举作为内部类,如下所示: 我不想让两个枚举都实现一个接口,而不得不两次实现相同的方法,而是希望在外部类中有一个方法可以执行以下操作: 但是,此方法无法编译。我要尝试做的是找出字符串值是否为枚举值的名称(在任何枚举中),无论是蔬菜,水果,还是其他。不管这实际上是否是冗余方法,我尝试(重新)编写的方法有什么问题? 基本上我想这样做: 问题答案: 原来有几个问题:
问题内容: 我了解hashCode的思想以及为什么需要它。但是我对如何为通用对象计算hashCode感到困惑。所以这是我的问题。如果我有一个String,我可能会使用以下函数来计算hashCode, 但是说我有以下目的, 我的IDE为此生成了一个自动的hashCode函数, 我的问题是,由于键和值是通用的,该怎么办?这种方法如何运作? 问题答案: 和是参数化类型的的对象。 这样,将在实际类型上被调
问题内容: 如何打印通用Java类型的类型? 反射?有什么花招吗? 问题答案: 可能会完成您的期望。