private boolean isPropertyMethod(String name, Method method) { if (name.startsWith("get") || name.startsWith("is")) { return method.getParameterTypes().length == 0; } else if (name.startsWith("set")) { return method.getParameterTypes().length == 1; } else { return false; } }
private void scanMethods() { Method[] methods = this.javaClass.getMethods(); int len = methods.length; for (int i = 0; i < len; i++) { Method method = methods[i]; String name = method.getName(); if (isPropertyMethod(name, method)) { this.ensurePropertyKnown(name, method); } if (isNameIndexer(name, method)) { this.updateNameIndexer(name, method); } else if (this.isIntegerIndexer(name, method)) { this.updateIntegerIndexer(name, method); } else { Function f = new JavaFunctionObject(name, method); this.functions.put(name, f); } } }
private boolean isIntegerIndexer(String name, Method method) { return ("item".equals(name) && method.getParameterTypes().length == 1) || ("setItem".equals(name) && method.getParameterTypes().length == 2); }