Java getParameters()应该返回一个数组,这段代码应该在jdk 7 maven项目中获得成功
所以这里的问题是它是一个带有JDK 7源配置的maven项目。它完美地构建在linux和windows机器上。在我的mac book pro上,它总是说上述方法不适用于类型方法 我确信这个方法应该在JDK 7的所有版本上都可用 有什么线索吗?方法.getParameters()是在JDK 8中引入的。也许您正在寻找方法.getParameterTypes() 源代码级别只控制编译器将接受哪些语言特性,而不是根据哪些JDK JAR进行编译 查看您在MBP上安装的Maven所使用的Java编译器版本。如果它正在查找1.7编译器,那么它可能正在查找包含JDK类1.7版本的JAR,其中Java getParameters()应该返回一个数组,这段代码应该在jdk 7 maven项目中获得成功,java,maven,reflection,compiler-errors,Java,Maven,Reflection,Compiler Errors,所以这里的问题是它是一个带有JDK 7源配置的maven项目。它完美地构建在linux和windows机器上。在我的mac book pro上,它总是说上述方法不适用于类型方法 我确信这个方法应该在JDK 7的所有版本上都可用 有什么线索吗?方法.getParameters()是在JDK 8中引入的。也许您正在寻找方法.getParameterTypes() 源代码级别只控制编译器将接受哪些语言特性,而不是根据哪些JDK JAR进行编译 查看您在MBP上安装的Maven所使用的Java编译器版本
java.lang.reflect.Method
没有名为getParameters()
的方法。getParameters()是在JDK 8中引入的。也许您正在寻找方法.getParameterTypes()
源代码级别只控制编译器将接受哪些语言特性,而不是根据哪些JDK JAR进行编译
查看您在MBP上安装的Maven所使用的Java编译器版本。如果它正在查找1.7编译器,那么它可能正在查找包含JDK类1.7版本的JAR,其中
java.lang.reflect.Method
没有名为getParameters()的方法
请发布您得到的准确编译错误。请发布您得到的准确编译错误。那么它在JDK 7 maven项目上是如何工作的。。当maven项目中的源代码级别显式设置为7时?在上面的回答中添加了进一步的解释。那么它在JDK 7 maven项目中是如何工作的呢。。当maven项目中的源代码级别显式设置为7时,在上面添加了进一步的解释。
private void setPropertiesToBasePojoMarkerImpl(Object obj, Method[] methods) {
for (Method method : methods) {
if (method.getName().contains("get")
&& !method.isAnnotationPresent(Worker.class)
&& !method.getName().contains("getClass")
&& isPojoMarkerMethod(method)
&& method.getParameters().length == 0) {
// in the above condition it says the method getParameters() is undefined for type Method
try {
Serializable result = (Serializable) method.invoke(obj, new Object[0]);
if (result != null) {
if (staticRegistry.isReferencePresent(result) != null)
result = staticRegistry.isReferencePresent(result);
}
String propname = method.getName().toString().substring(3).toLowerCase();
beanEnhancer.getServerBasePojoMarkerImpl().setProperty(propname, result);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
logger.log(Level.WARNING, "unable to invoke method with name" + method.getName() + " " + e);
}
}
}
}