Java 8:反射字段.get()try-catch错误 问题

Java 8:反射字段.get()try-catch错误 问题,java,reflection,try-catch,java-8,Java,Reflection,Try Catch,Java 8,我在Eclipse中收到一个错误,指出我对Field.get(Object)的调用有一个未处理的异常。当我用推荐的try-catch包装代码时,错误仍然存在。我假设我必须用try-catch将参数包装在get()方法中。这可能吗 错误 未处理的异常类型IllegalAccessException 有关行: return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList()); 代码 主类

我在Eclipse中收到一个错误,指出我对
Field.get(Object)
的调用有一个未处理的异常。当我用推荐的try-catch包装代码时,错误仍然存在。我假设我必须用try-catch将参数包装在
get()
方法中。这可能吗

错误
未处理的异常类型IllegalAccessException

有关行:

return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
代码 主类 Entity.java
您需要处理
IllegalAccessException
,它可以作为
fieldType.cast(f.get(e))
的结果抛出。您可以在
try/catch

if (useLambda) {
            return list.stream().map(e -> {
                try {
                    return fieldType.cast(f.get(e));
                } catch (IllegalAccessException e1) {
                    e1.printStackTrace();
                    return null;
                }
            }).collect(Collectors.toList());
        } 

您需要处理
IllegalAccessException
,它可以作为
fieldType.cast(f.get(e))
的结果抛出。您可以在
try/catch

if (useLambda) {
            return list.stream().map(e -> {
                try {
                    return fieldType.cast(f.get(e));
                } catch (IllegalAccessException e1) {
                    e1.printStackTrace();
                    return null;
                }
            }).collect(Collectors.toList());
        } 

您需要处理
IllegalAccessException
,它可以作为
fieldType.cast(f.get(e))
的结果抛出。您可以在
try/catch

if (useLambda) {
            return list.stream().map(e -> {
                try {
                    return fieldType.cast(f.get(e));
                } catch (IllegalAccessException e1) {
                    e1.printStackTrace();
                    return null;
                }
            }).collect(Collectors.toList());
        } 

您需要处理
IllegalAccessException
,它可以作为
fieldType.cast(f.get(e))
的结果抛出。您可以在
try/catch

if (useLambda) {
            return list.stream().map(e -> {
                try {
                    return fieldType.cast(f.get(e));
                } catch (IllegalAccessException e1) {
                    e1.printStackTrace();
                    return null;
                }
            }).collect(Collectors.toList());
        } 

Eclipse现在有点愚蠢(可能有一个bug打开了)

这里有一个lambda表达式

return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
字段#get(Object)
被声明为引发选中的异常。但是您正在实现的函数接口方法
Function#apply(Object)
,却没有。Eclipse很愚蠢,因为它建议您将语句包装在一个try块中,但它会在整个过程中添加try块

try {
    return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
} catch (Exception e) {
}
实际上,它应该将其添加到lambda的主体中

return list.stream().map(e -> {
    try {
        return fieldType.cast(f.get(e));
    } catch (Exception e) {
        return /* something else */ null; // or throw an unchecked exception
    }
}).collect(Collectors.toList());

当lambda主体是一个简单的表达式而不是一个块时,这种情况似乎就会发生。

Eclipse现在有点愚蠢(可能有一个bug打开了)

这里有一个lambda表达式

return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
字段#get(Object)
被声明为引发选中的异常。但是您正在实现的函数接口方法
Function#apply(Object)
,却没有。Eclipse很愚蠢,因为它建议您将语句包装在一个try块中,但它会在整个过程中添加try块

try {
    return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
} catch (Exception e) {
}
实际上,它应该将其添加到lambda的主体中

return list.stream().map(e -> {
    try {
        return fieldType.cast(f.get(e));
    } catch (Exception e) {
        return /* something else */ null; // or throw an unchecked exception
    }
}).collect(Collectors.toList());

当lambda主体是一个简单的表达式而不是一个块时,这种情况似乎就会发生。

Eclipse现在有点愚蠢(可能有一个bug打开了)

这里有一个lambda表达式

return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
字段#get(Object)
被声明为引发选中的异常。但是您正在实现的函数接口方法
Function#apply(Object)
,却没有。Eclipse很愚蠢,因为它建议您将语句包装在一个try块中,但它会在整个过程中添加try块

try {
    return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
} catch (Exception e) {
}
实际上,它应该将其添加到lambda的主体中

return list.stream().map(e -> {
    try {
        return fieldType.cast(f.get(e));
    } catch (Exception e) {
        return /* something else */ null; // or throw an unchecked exception
    }
}).collect(Collectors.toList());

当lambda主体是一个简单的表达式而不是一个块时,这种情况似乎就会发生。

Eclipse现在有点愚蠢(可能有一个bug打开了)

这里有一个lambda表达式

return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
字段#get(Object)
被声明为引发选中的异常。但是您正在实现的函数接口方法
Function#apply(Object)
,却没有。Eclipse很愚蠢,因为它建议您将语句包装在一个try块中,但它会在整个过程中添加try块

try {
    return list.stream().map(e -> fieldType.cast(f.get(e))).collect(Collectors.toList());
} catch (Exception e) {
}
实际上,它应该将其添加到lambda的主体中

return list.stream().map(e -> {
    try {
        return fieldType.cast(f.get(e));
    } catch (Exception e) {
        return /* something else */ null; // or throw an unchecked exception
    }
}).collect(Collectors.toList());

当lambda体是一个简单的表达式而不是一个块时,似乎会发生这种情况。

我以为就是这样,我假设方法的全局抛出会满足这一点。。。我想,在一行上写下整件事并不能解决问题。@Mr.Polywhill异常会在
函数中抛出#apply(Object)
映射中抛出(它也不声明抛出),而不是在你的方法中抛出。我以为就是这样,我以为这些方法的全局抛出会满足这一点。。。我想,在一行上写下整件事并不能解决问题。@Mr.Polywhill异常会在
函数中抛出#apply(Object)
映射中抛出(它也不声明抛出),而不是在你的方法中抛出。我以为就是这样,我以为这些方法的全局抛出会满足这一点。。。我想,在一行上写下整件事并不能解决问题。@Mr.Polywhill异常会在
函数中抛出#apply(Object)
映射中抛出(它也不声明抛出),而不是在你的方法中抛出。我以为就是这样,我以为这些方法的全局抛出会满足这一点。。。我想,在一行上写下整件事并不能解决问题。@Mr.polywhill异常将在
函数中抛出#apply(Object)
映射中抛出(它也不声明抛出),而不是在您的方法中抛出。