Hi Mandy, I don't have access to JBS unfortunately.
Cheers Kasper On Wed, 24 Oct 2018 at 16:50, Mandy Chung <mandy.ch...@oracle.com> wrote: > Can you file a JBS issue? > > Mandy > > On 10/23/18 12:15 PM, Kasper Nielsen wrote: > > Hi Mandy, > > Yes, that it was my code is doing now, I unreflect a member and then test > if an exception is thrown. > However, it is just a bit of an antipattern, catching exception to test a > condition. > > I would prefer if something like this was available: > boolean Lookup.isAccessible(Member member) > boolean Lookup.isAccessible(Class<?> member) > > > /Kasper > > On Tue, 23 Oct 2018 at 00:07, Mandy Chung <mandy.ch...@oracle.com> wrote: > >> Lookup.accessClass(member.getDeclaringClass()) can be used to test >> if the lookup class can access the declaring class of the given member. >> This only checks if a class is accessible. I think unreflecting a member >> will do what you are looking for to check if the lookup object has access >> to the member. What does the code do if the Lookup object has access >> vs has no access? >> >> Mandy >> >> On 10/22/18 1:17 PM, Kasper Nielsen wrote: >> >> Hi, >> >> Are there any elegant way to test if a Lookup object has access to a member >> (field, constructor, method). Right now I'm using the following code >> >> public static boolean hasAccess(MethodHandles.Lookup lookup, Member member) >> { >> >> if (member instanceof Constructor) { >> >> try { >> >> lookup.unreflectConstructor((Constructor<?>) member); >> >> } catch (IllegalAccessException e) { >> >> return false; >> >> } >> >> } else if (member instanceof Method) { >> >> try { >> >> lookup.unreflect((Method) member); >> >> } catch (IllegalAccessException e) { >> >> return false; >> >> } >> >> } else if (member instanceof Field) { >> >> try { >> >> lookup.unreflectVarHandle((Field) member); >> >> } catch (IllegalAccessException e) { >> >> return false; >> >> } >> >> } >> >> return true; >> >> } >> >> Cheers >> Kasper >> >> >> >