Java泛型中的返回 publictget(int索引){ if(索引>-1&&index-1&&index-1&&index
我在最后一行的返回值上遇到了一个问题。在这种情况下,我应该如何返回以及返回什么值?在这种情况下,您始终可以返回Java泛型中的返回 publictget(int索引){ if(索引>-1&&index-1&&index-1&&index,java,Java,我在最后一行的返回值上遇到了一个问题。在这种情况下,我应该如何返回以及返回什么值?在这种情况下,您始终可以返回null,但这可能是您想要的,也可能不是,这取决于具体情况 有时最好抛出一些异常(NoTouchElementException,IndexOutOfBoundsException…等等)一些可能的选项取决于您认为最合适的选项 返回空值 抛出异常 归还 如果要继续该方法,则需要更改方法的返回类型以及方法中的一些逻辑,即: public T get(int index) {
null
,但这可能是您想要的,也可能不是,这取决于具体情况
有时最好抛出一些异常(
NoTouchElementException
,IndexOutOfBoundsException
…等等)一些可能的选项取决于您认为最合适的选项
public T get(int index) {
if(index > -1 && index < array.length)
return array[index];
else
System.out.println("Invalid Index");
return 0;
}
public可选get(int-index){
if(索引>-1&&index
使T
成为一个最多有上限的泛型类型Number
,然后显式强制转换int数组元素:
public Optional<T> get(int index) {
if(index > -1 && index < array.length)
return Optional.ofNullable(array[index]);
else
System.out.println("Invalid Index");
return Optional.empty();
}
publictget(int索引){
if(索引>-1&&index
无法返回所需内容的原因是编译器此时不知道类型-必须使用泛型参数对其进行实例化。
当创建泛型类时,您必须遵守约定——当类返回T时,您必须以“ReturnObjectOfTypet”结束方法(或者像其他人所说的那样抛出异常)
然而,您的案例是一个完美的例子,在这种情况下,应该抛出异常,返回null可能会在将来导致很多问题。好的,这是由您决定适当的行为。您可以返回null、从数组返回其他值或引发异常。您可以返回
null
是否T
有Number
或Integer
的上限?T是上下文参数,您必须显示它所属的类
public <T extends Number> T get(int index) {
if (index > -1 && index < array.length)
return (T) new Integer(array[index]);
else
System.out.println("Invalid Index");
return (T) new Integer(0);
}