相关疑难解决方法(0)

Java Generics WildCard:<?extends Number> vs <T extends Number>

这两个功能有什么区别?

static void gPrint(List<? extends Number> l) {
    for (Number n : l) {
        System.out.println(n);
    }
}

static <T extends Number> void gPrintA(List<T> l) {
    for (Number n : l) {
        System.out.println(n);
    }
}
Run Code Online (Sandbox Code Playgroud)

我看到相同的输出.

java generics

62
推荐指数
3
解决办法
1万
查看次数

static <T extends Number&Comparable <?超级号码>>

我有一个静态方法跟随类:

public class Helper {

    public static <T extends Number & Comparable<? super Number>> Boolean inRange(T value, T minRange, T maxRange) {
        //  equivalent (value >= minRange && value <= maxRange)
        if (value.compareTo(minRange) >= 0 && value.compareTo(maxRange) <= 0)
            return true;
        else
            return false;
    }

}
Run Code Online (Sandbox Code Playgroud)

我试着调用这个方法:

Integer value = 2;
Integer min = 3;
Integer max = 8;
Helper.inRange(value, min, max) ;
Run Code Online (Sandbox Code Playgroud)

Netbeans编译器显示此错误消息:

类Helper中的方法inRange不能应用于给定的类型; required:T,T,T found:java.lang.Integer,java.lang.Integer,java.lang.Integer reason:推断类型不符合推断的声明边界:java.lang.Integer bound(s) :java.lang.Number,java.lang.Comparable

有任何想法吗?

谢谢.

java generics methods static call

5
推荐指数
1
解决办法
2794
查看次数

java参数化通用静态工厂

在Java中是否可以创建一个静态工厂方法/类,它使用接口作为参数化类型并返回给定接口的实现类?

虽然我对泛型的了解有限,但这就是我想要做的:

// define a base interface:
public interface Tool {
    // nothing here, just the interface.
}

// define a parser tool:
public interface Parser extends Tool {
    public ParseObject parse(InputStream is); 
}

// define a converter tool:
public interface Converter extends Tool {
    public ConvertObject convert(InputStream is, OutputStream os);
}

// define a factory class
public class ToolFactory {
    public static <? extends Tool> getInstance(<? extends Tool> tool) {
       // what I want this method to return is: …
Run Code Online (Sandbox Code Playgroud)

java generics design-patterns factory factory-method

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