草庐IT

Reflection

全部标签

java - 如何限制开发人员使用反射访问Java中的私有(private)方法和构造函数?

如何限制开发者使用反射访问Java中的私有(private)方法和构造函数?使用普通的Java代码,我们无法访问类之外的私有(private)构造函数或私有(private)方法。但是通过使用反射,我们可以访问Java类中的任何私有(private)方法和构造函数。那么我们怎样才能为我们的Java代码提供安全性呢? 最佳答案 使用SecurityManager运行您的应用程序和一个足够严格的securitypolicy.有一个shortsummaryinthetutorialthesecuritydocumentation中的大量信

java - 如何使用可变参数和反射

简单的问题,如何使这段代码工作?publicclassT{publicstaticvoidmain(String[]args)throwsException{newT().m();}public//asmentionedbyBozhovoidfoo(String...s){System.err.println(s[0]);}voidm()throwsException{String[]a=newString[]{"hello","kitty"};System.err.println(a.getClass());Methodm=getClass().getMethod("foo",a.g

java - 如何使用可变参数和反射

简单的问题,如何使这段代码工作?publicclassT{publicstaticvoidmain(String[]args)throwsException{newT().m();}public//asmentionedbyBozhovoidfoo(String...s){System.err.println(s[0]);}voidm()throwsException{String[]a=newString[]{"hello","kitty"};System.err.println(a.getClass());Methodm=getClass().getMethod("foo",a.g

Java动态函数调用

我有一个字符串数组,其中包含yyyyyy类中的方法名称在xxxxxx类中,我正在创建一个yyyyyy实例(比如obj)。现在我可以调用obj.function_name(),但我想在循环中从String数组中读取function_name。这可能吗? 最佳答案 您可以,使用reflection.这是通过调用Yyyy.class.getMethod("methodName").invoke(someArgs)你必须处理一堆异常,你的方法必须是public。请注意,Java编码约定更喜欢methodName而不是method_name。

Java动态函数调用

我有一个字符串数组,其中包含yyyyyy类中的方法名称在xxxxxx类中,我正在创建一个yyyyyy实例(比如obj)。现在我可以调用obj.function_name(),但我想在循环中从String数组中读取function_name。这可能吗? 最佳答案 您可以,使用reflection.这是通过调用Yyyy.class.getMethod("methodName").invoke(someArgs)你必须处理一堆异常,你的方法必须是public。请注意,Java编码约定更喜欢methodName而不是method_name。

java - 使用反射设置对象属性

我按名称获取类,我需要用相应的数据更新它们,我的问题是如何使用java我想为方法添加一些虚拟数据。我不知道类类型我只是获取类名并使用反射来获取他的数据我使用这段代码来获取类实例和ClassclassHandle=Class.forName(className);ObjectmyObject=classHandle.newInstance();//iteratethroughallthemethodsdeclaredbytheclassfor(Methodmethod:classHandle.getMethods()){//findallthesetmethodsif(method.ge

java - 使用反射设置对象属性

我按名称获取类,我需要用相应的数据更新它们,我的问题是如何使用java我想为方法添加一些虚拟数据。我不知道类类型我只是获取类名并使用反射来获取他的数据我使用这段代码来获取类实例和ClassclassHandle=Class.forName(className);ObjectmyObject=classHandle.newInstance();//iteratethroughallthemethodsdeclaredbytheclassfor(Methodmethod:classHandle.getMethods()){//findallthesetmethodsif(method.ge

java - Void 真的无法实例化吗?

javadocforVoid说:TheVoidclassisanuninstantiableplaceholderclasstoholdareferencetotheClassobjectrepresentingtheJavakeywordvoid.但构造函数很简单:privateVoid(){}这段代码实例化了一个Void:Constructorc=Void.class.getDeclaredConstructor();c.setAccessible(true);Voidv=c.newInstance();//Hellosailor所以Void不是不可实例化的。有没有办法让Void真

java - Void 真的无法实例化吗?

javadocforVoid说:TheVoidclassisanuninstantiableplaceholderclasstoholdareferencetotheClassobjectrepresentingtheJavakeywordvoid.但构造函数很简单:privateVoid(){}这段代码实例化了一个Void:Constructorc=Void.class.getDeclaredConstructor();c.setAccessible(true);Voidv=c.newInstance();//Hellosailor所以Void不是不可实例化的。有没有办法让Void真

Java 反射 Bean 属性 API

是否有任何标准方法可以访问JavaBean属性,例如classA{privateStringname;publicvoidsetName(Stringname){this.name=name;}publicStringgetName(){returnthis.name;}}那么我可以使用反射API访问这个javabean属性名称,以便当我更改属性的值时,当我设置和获取该属性的值时会自动调用getName和setName方法 最佳答案 你的问题很不清楚,但如果我明白了:是的。java.beans包有所谓的Introspector.在那