java – 如何将方法限制为仅接受对象作为参数而不是类对象作为类型文字?

我想将对象作为参数而不是类对象传递为类型文字.我尝试了很多方法,但没有得到输出.

public <T> List<Map<String,Object>> getUIElementsList(Class<T> requiredType) {
       doSomeThing();
       return this.fieldList;
}

如果我运行的代码将接受以下值作为参数传递.如果我有一个FormBean类

FormBean formBean = new FormBean();  
formBean.setUserId(252528); 
getUIElementsList(FormBean.class); //restrict this case
getUIElementsList(formBean); 

我希望该方法只能接受已经创建的intance对象.我甚至不能使用newInstance()方法来创建另一个对象,因为我也需要旧的对象实例值.

有什么建议?

最佳答案
类< T>本身也代表了一些实例 – 这是类型为Class的实例,由类型T参数化.

我认为你能做的最好的事情是添加一个检查,如果提供的类型是Class的实例,如果是,则抛出IllegalArgumentException:

public <T> List<Map<String,Object>> getUIElementsList(T value) {
    if (value instanceof Class) { 
        throw new IllegalArgumentException("Class instances are not supported");
    }
    ..
}

在定义类型参数时,只允许通过现有(系列)类型的交集对它们进行约束,但不允许对给定类型应用否定,例如您要瞄准的东西,这类似于“所有类型而非一个” .

转载注明原文:java – 如何将方法限制为仅接受对象作为参数而不是类对象作为类型文字? - 代码日志