----- Mail original ----- > De: "Michał Zegan" <webczat_...@poczta.onet.pl> > À: "Remi Forax" <fo...@univ-mlv.fr>, "jigsaw-dev" > <jigsaw-dev@openjdk.java.net> > Envoyé: Samedi 21 Juillet 2018 21:44:23 > Objet: Re: method handles and open packages
> I would also believe that the unreflect methods would work for this case > too if the reflected version had access checks already suppressed. yes, right ! if the signature of the method is fully known, you can use privateLookupIn, if you have only partial information and need other info (like an annotation, using a naming convention, etc) to find the method, then unreflect* is the way to go. Rémi > > W dniu 21.07.2018 o 19:27, Remi Forax pisze: >> Hi, >> >> On July 21, 2018 3:43:51 PM UTC, "Michał Zegan" <webczat_...@poczta.onet.pl> >> wrote: >>> Hello, >>> If I use reflection, I can access every member of every package in a >>> module if a module opens such package, and that includes private >>> members. >>> What, however, about using method handles for that purpose? >> >> https://docs.oracle.com/javase/9/docs/api/java/lang/invoke/MethodHandles.html#privateLookupIn-java.lang.Class-java.lang.invoke.MethodHandles.Lookup- >> >>> Also, if you have a class in module a that wants to deserialize data to >>> objects of classes in module b, then should module b open a package >>> with >>> those classes to a, or maybe, give the deserializer it's lookup object, >>> in order for it to be able to access members of non exported non opened >>> packages? It is for the case where the deserializer is called by the >>> module b. Also I assume that I do not need access to non public members >>> of classes, like I deserialize using public setters always. >> >> Rémi >> >>