动态泛型Java

动态泛型Java,java,generics,Java,Generics,我想要的是:我想要指定一个参数列表,然后返回这些类型的列表,特别是返回在索引中设置的类型 像您在一个方法中指定xyz这样的动态泛型在另一个方法中获得xyz使用同一类的动态泛型参数量 与我的命令API一样,如果我有command或command,我想指定command或command 公共抽象getParams(String…args); 公开摘要无效运行(X X,Y,Z); 或者类似于xyz可能在列表中或实际上不在列表中的情况。在Java中,至少在Java 8中不支持动态泛型,即使源代码抛出编

我想要的是:我想要指定一个参数列表,然后返回这些类型的列表,特别是返回在索引中设置的类型

像您在一个方法中指定xyz这样的动态泛型在另一个方法中获得xyz使用同一类的动态泛型参数量

与我的命令API一样,如果我有
command
command
,我想指定
command
command

公共抽象getParams(String…args);
公开摘要无效运行(X X,Y,Z);

或者类似于xyz可能在列表中或实际上不在列表中的情况。

在Java中,至少在Java 8中不支持动态泛型,即使源代码抛出编译错误。谁知道用Java15

下一个最好的方法是将参数包装到一个类中,并生成一个getter方法。当接收到错误的类时,它应该抛出类强制转换异常

public class ParamList<T> {
    
    public T[] args;
    public ParamList(T[] args)
    {
        this.args = args;
    }
    
    @SuppressWarnings("unchecked")
    public <K extends Object> K get(int index)
    {
        return (K) this.args[index];
    }

}
公共类参数列表{
公共T[]args;
公共参数列表(T[]参数)
{
this.args=args;
}
@抑制警告(“未选中”)
公共K get(int索引)
{
返回(K)this.args[index];
}
}

你的意思还不太清楚。泛型是一种静态的、只在编译时使用的特性,所以“动态泛型”听起来像是在寻找不存在的东西。我想要它,这样它就可以自动地将它转换为泛型。我想指定参数所在的类,然后让它基于这些泛型键创建一个方法,它将类似于File、Long或File,而不是每次只指定一个对象。所以,您想要具有可变数量类型参数的泛型吗?Java不支持这一点。如果我将所有内容包装在一个列表中,并使用getter,然后检查您输入到其中的每个索引,它以某种方式返回与typecasted
K extensed Object
完全相同的内容,该怎么办?这对我来说似乎是多余的。不,因为K等于外部命令对象需要的任何值。如果不匹配,它将抛出一个类强制转换异常,同时仍然非常易于使用且没有类强制转换异常。按意图工作是的,但是当您删除上限
对象
时,它也会工作,因为所有对象都隐式扩展
对象
类。只要
就足够了。
public class ParamList<T> {
    
    public T[] args;
    public ParamList(T[] args)
    {
        this.args = args;
    }
    
    @SuppressWarnings("unchecked")
    public <K extends Object> K get(int index)
    {
        return (K) this.args[index];
    }

}