eclipse的智能提示原理是什么
eclipse的智能提示原理是什么?我们写个String str = "aaaa";然后写str.它就会有提示。eclipse是怎么找到Sring的成员函数呢?有人说是用反射实现的,能具体解释下思路吗?或者给个资料。
我在网上找到这个外国人发的类似帖子How do they perform auto complete of code in eclipse or other ides? What is basic principle behind it?,它有个回复讲的是智能提示用了prefix tree,但感觉这只能实现如下功能:在一个文件里已经有一个长单词abcedfghijklmnopq,下次你再写个abcedfghi,按某个快捷键就能自动补全,说白了prefix tree只能实现自动补全的功能(就像vim的Ctl+N),但实现不了java定义的对象自动找自己的成员函数。
哪位大神能解释下"java定义的对象如何自动找自己的成员函数"?给个思路就行,细节我自己研究。万分感谢。
知道反射的具体原理吗
Thinking in java 上有个例子。先用Class<?> c = Class.forName(类名);产生一个类的Class,再用Method[] methods = c.getMethods();就能得到成员函数了。的确用的反射。谢谢NNTT2010。
源代码如下:
Java code?package org.xalg.test; import java.lang.reflect.*; import java.util.regex.*; public class ShowMethods { private static String usage = "usage:\n" + "ShowMethods qualified.class.name\n" + "To show all methods in class or:\n" + "ShowMethods qualified.class.name word\n" + "To search for methods involving 'word'"; private static Pattern p = Pattern.compile("\\w+\\."); public static void main(String[] args) { if (args.length < 1) { System.out.println(usage); System.exit(0); } int lines = 0; try { Class<?> c = Class.forName(args[0]); Method[] methods = c.getMethods(); Constructor[] ctors = c.getConstructors(); if (args.length == 1) { for (Method method : methods) System.out.println(p.matcher(method.toString()).replaceAll( "")); for (Constructor ctor : ctors) System.out.println(p.matcher(ctor.toString()) .replaceAll("")); lines = methods.length + ctors.length; } else { for (Method method : methods) if (method.toString().indexOf(args[1]) != -1) { System.out.println(p.matcher(method.toString()) .replaceAll("")); lines++; } for (Constructor ctor : ctors) if (ctor.toString().indexOf(args[1]) != -1) { System.out.println(p.matcher(ctor.toString()) .replaceAll("")); lines++; } } } catch (ClassNotFoundException e) { System.out.println("No such class: " + e); } } }