[标题]:对Class.getMethod()的调用未经检查
[时间]:2009-4-5
[摘要]:警告:[unchecked]对作为普通类型 java.lang.Class 的成员的 getMethod(java.lang.String,java.lang.Class <?>...) 的调用未经检查.
[关键字]:Class,getMethod,unchecked,反射,reflection,范型
[环境]:JDK6
[作者]:Winty (wintys@gmail.com)
[错误]:
Class myClass = MethodPointerTest.class;
Method add = myClass.getMethod("add" , int.class , int.class );
上述代码出现如下警告:
警告:[unchecked]对作为普通类型 java.lang.Class 的成员的 getMethod(java.lang.String,java.lang.Class <?>...) 的调用未经检查.
[解决]:
是范型在作怪。Class修改为Class<?>:
Class<?> myClass = MethodPointerTest.class;
Method add = myClass.getMethod("add" , int.class , int.class );
分享到:
相关推荐
在Java编程语言中,`Class.getMethods()`是一个非常重要的方法,它属于`java.lang.Class`类。这个方法用于获取指定类或接口的所有公共方法,包括继承自超类和实现的接口的方法。`getMethods()`返回一个`Method`对象...
at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.getMainMethod(Unknown Source) at sun.launcher.LauncherHelper....
Method method = MyClass.class.getMethod("myMethodWithObjectArg", Object.class); method.invoke(myInstance, myObjectParam); ``` 对于基本类型参数,如`int`,由于Java的类型擦除,我们需要使用对应的包装类。...
总的来说,`PackageManager`是Android开发中不可或缺的一个工具,它使得开发者能够对系统中的应用进行管理和控制,提供了丰富的功能,如查询应用信息、检查权限、解析Intent等。正确地使用`PackageManager`可以极大...
Java 反射机制中getClass()和.class的使用方法示例 本文主要介绍了 Java 反射机制中getClass()和.class的使用方法,并结合实例形式分析了 Java 类反射机制的相关操作技巧。 一、获取类的反射 在 Java 中,可以...
反射是.NET框架提供的一种强大工具,它允许程序在运行时检查自身的信息,如类型、方法、属性、字段等,并能动态地创建和调用对象。获取调用函数的参数信息主要依赖于`StackTrace`类和`MethodBase`类。 1. **Stack...
Method method = clazz.getMethod("yourMethodName", String.class); method.invoke(instance, "yourParameter"); ``` 调用基本类型参数的方法,我们需要使用包装类作为`getMethod()`的参数类型。比如,如果我们有...
在上面的代码中,首先通过 `Class.forName(className)` 获取该类的 Class,然后配置参数的 Class 数组,接着通过 `ownerClass.getMethod(methodName, argsClass)` 获取该类的静态方法,最后通过 `method.invoke(null...
Method setNameMethod = userClass.getMethod("setName", String.class); // 调用setter方法设置name setNameMethod.invoke(userObj, "张三"); // 获取age属性的setter方法 Method setAgeMethod = userClass....
反射是Java编程语言中的一个重要特性,它允许程序在运行时检查自身结构(如类、字段、方法等),并且可以在运行时调用任意一个类的成员(包括私有成员)。这一特性为Java提供了极大的灵活性,使其成为诸如Spring框架...
1. 获取`Class`对象:通过`Class.forName("全限定类名")`,`类名.class`,或者`对象.getClass()`。 2. 创建对象:使用`Class.newInstance()`(要求类有无参构造器)或`Constructor.newInstance()`(传入构造参数)。...
通过`Remote.class.getMethod()`获取该方法的`Method`对象,这是因为RMI底层使用了反射机制来实现远程方法调用。 ```java private static Method $method_getMemberAccountCount_5; static { try { $method_...
Method sayHelloMethod = personClass.getMethod("sayHello", String.class); sayHelloMethod.invoke(personInstance, "张三"); // 调用sayHello方法,传入参数"张三" ``` 动态调用方法在许多场景下都非常有用,...
调用对象的方法需要先获取Method对象,这可以通过`Class ownerClass = owner.getClass()`获取对象的Class,然后`Method method = ownerClass.getMethod(methodName, argsClass)`根据方法名和参数类型数组查找对应的...
Method method = clazz.getMethod("dynamicMethod", String.class); // 3. 创建对象(假设DynamicClass有无参构造器) Object instance = clazz.getDeclaredConstructor().newInstance(); // 4. 调用方法 ...
Method method = ownerClass.getMethod(methodName, argsClass):通过Method名和参数的Class数组得到要执行的Method。 method.invoke(owner, args):执行该Method,invoke方法的参数是执行这个方法的对象,和参数...
Method setAgeMethod = personClass.getMethod("setAge", int.class); setAgeMethod.invoke(person, 25); } } ``` 在这个例子中,`ReflectTester`展示了如何使用反射来操作`Person`类的私有字段和方法。请注意,...
Method concat = String.class.getMethod("concat", new Class[]{String.class}); Method println = PrintStream.class.getMethod("println", new Class[]{String.class}); builder.constant("hello") //定义常量 ....
Method method = SomeClass.class.getMethod("methodName", argTypes); method.invoke(objectInstance, arguments); ``` 4. **访问字段** - `Field对象`提供了`set()`和`get()`方法来设置和获取字段的值,如: ...
Method method = Point.class.getMethod("toString"); String pointStr = (String) method.invoke(point); System.out.println("Point as string: " + pointStr); ``` 10.泛型与Class对象 泛型在Java中提供了类型...