当前位置: 首页 > 面试题库 >

在运行时确定通用方法参数的类型

刘丰羽
2023-03-14
问题内容

给定具有以下结构的类。我试图确定由泛型方法的调用者分配的参数T的类型。

public class MyClass{

    public <T> Boolean IsSupportable() {

        Class typeOfT; // Need to determine Class for generic parameter T

        // Business Logic goes here

        return true; 
    }
}

在C#中,我将使用“ default(T)”或“
typeof(T)”,但我试图在Java中执行此操作。谁知道/如何做?我真的不需要实例,我只需要Class定义


问题答案:

你不能那样做。您可以做的是使方法签名如下:

public boolean isSupportable(Class<?> type)

然后,您可以使用给定的类检查类型。



 类似资料:
  • 我正在尝试使用jersey 2/HK2自动绑定带有特定注释的工厂类。因此,我在运行时从泛型接口获取所提供的类型,然后尝试将工厂绑定到此类型。将工厂绑定到类的方法如下所示: HK2提供的方法定义如下: 当我用Eclipse构建所有东西时,这似乎工作得很好。然而,当我使用maven构建项目时,我会得到以下构建错误:

  • 问题内容: 假设通用类型声明(Java) 我如何在运行时实例化一个Type对象,该对象表示通过特定类型T(也仅在运行时才知道)进行参数化的Foo? 问题答案: 我想我明白你的问题。您想要序列化一个,并且在运行时具有class对象(但在编译时不是固定的)。因此,在Gson中建议的创建匿名子类的解决方案不起作用,因为这要求在编译时对参数化类型(例如)进行硬编码,并且如果使用,则该解决方案不起作用。 但

  • 我想使用JDBC prepared语句将一个表的内容从数据库写入CSV文件。我正在使用的PSQL查询是: 我的代码如下: 它不能与copy..to语句一起工作的原因是什么?

  • 问题内容: 而且我正在尝试更改方法注释,但是java.lang.reflect.Method不包含任何地图字段(例如“ annotations”)或方法(例如“ getDeclaredAnnotationMap”) 只有但是我可以用这个字节数组做什么? 那么,如何修改方法的注释呢? 编辑: 我创建了:http : //pastebin.com/T2rewcwU 但是,仅编辑此方法实例,如果取消注释

  • 我正在用真正的ios设备在mac上测试我的应用程序。当我运行脚本时,它会在Eclipse IDE中显示以下错误:, org.openqa.selenium.无法创建新的远程会话。所需的功能=功能[{app=/用户//下载/XXX. ipa, platformVersion=10.2.1, platformName=iOS, deviceName=Mr. x'S iPod Touch, UDID=*

  • 问题内容: 我正在尝试为参数化的类重写方法。 我如何确保该对象与相同? 问题答案: 您可以通过保留对类型的引用来实现。但是,我认为, 相等性测试应该针对对象表示的值,而不是针对这些值表示的具体类型 。 一个典型的例子是Collections API。 返回。尽管它们具有完全不同的类型,但是它们表示相同的值,即“空集合”。 就个人而言,代表一个相同数据(例如)的两个s是否应该不相等,因为一个是类型,