4 ms·
Or are forced to because they want to use generics or lambdas.
by bbatha 2y ago
Or are forced to because they want to use generics or lambdas.
- gf000 2y agoBoth work with checked exceptions.
- int_19h 2y agoThe problem is that there's no way to specify an exception specification like "I propagate everything that this lambda throws" (or, for generics, "that method M of class C throws").
- layer8 2y agoNo, but you can have an interface like interface Func<P, R, X extends Exception> { R func(P param) throws X; } or the same with more than one exception type, and convert your lambda to that. This works. The only problem is that you can’t abstract over an arbitrary number of exception types. In principle, one could imagine a syntax for variadic type parameters like interface Func<P..., R, X... extends Exception> { R func(P... params) throws X...; } that would solve that problem.
- erik_seaberg 2y agoWill the compiler infer that a lambda or a method ref implements Func with its exception type param, or do you have to rewrite call sites?
- layer8 2y agoThe compiler already infers that in current Java for one checked exception type, and also for several exception types at least in some cases (the latter seems to be a little more buggy in the current implementation).