相关疑难解决方法(0)

使用java泛型迭代枚举值

我正在尝试找到一种在使用泛型时迭代枚举值的方法.不知道如何做到这一点或是否有可能.

以下代码说明了我想要做的事情.请注意,代码T.values()在以下代码中无效.

public class Filter<T> {
    private List<T> availableOptions = new ArrayList<T>();
    private T selectedOption;

    public Filter(T selectedOption) {
        this.selectedOption = selectedOption;
        for (T option : T.values()) {  // INVALID CODE
            availableOptions.add(option);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我将如何实例化Filter对象:

Filter<TimePeriod> filter = new Filter<TimePeriod>(TimePeriod.ALL);
Run Code Online (Sandbox Code Playgroud)

枚举定义如下:

public enum TimePeriod {
    ALL("All"), 
    FUTURE("Future"), 
    NEXT7DAYS("Next 7 Days"), 
    NEXT14DAYS("Next 14 Days"), 
    NEXT30DAYS("Next 30 Days"), 
    PAST("Past"),
    LAST7DAYS("Last 7 Days"), 
    LAST14DAYS("Last 14 Days"),
    LAST30DAYS("Last 30 Days"); 

    private final String name;

    private TimePeriod(String name) {
        this.name = name; …
Run Code Online (Sandbox Code Playgroud)

java generics enums enumeration

66
推荐指数
4
解决办法
4万
查看次数

使用反射在运行时推断java泛型参数

我有一个带有以下签名的方法:

// Converts a json string to a list of objects
// Assumption: json is an array, and all items in the list are of the same type
public <T> List<T> getListFromJson( String json, Class<T> itemType, List<T> defValue ) {
    final ArrayList<T> list = new ArrayList<T>();

    for( JsonElement e : parser.parse(json).getAsJsonArray())
        list.add( (T) (
                Number.class.isAssignableFrom(itemType) ? e.getAsNumber() :
                Boolean.class.isAssignableFrom(itemType) ? e.getAsBoolean() :
                Character.class.isAssignableFrom(itemType) ? e.getAsCharacter() :
                String.class.isAssignableFrom(itemType) ? e.getAsString() :
                JsonElement.class.isAssignableFrom(itemType) ? e :
                null
            )
        );

    return list;
} …
Run Code Online (Sandbox Code Playgroud)

java generics reflection

4
推荐指数
1
解决办法
1775
查看次数

标签 统计

generics ×2

java ×2

enumeration ×1

enums ×1

reflection ×1