import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.lang.reflect.Method;
public class SelectPlace {
String city1[] = {"东城","西城","崇文","宣武","朝阳","海淀","丰台","石景山","门头沟","房山","通州","顺义","昌平","大兴","平谷","怀柔","密云","其它"};
String city2[] = {"黄浦","卢湾","徐汇","长宁","静安","普陀","闸北","虹口","杨浦","宝山","闵行","嘉定","浦东新","松江","金山","青浦","南汇","奉贤","崇明","其它"};
String city3[] = {"和平","河东","河西","南开","河北","红桥","塘沽","汉沽","大港","东丽","西青","北辰","津南","武清","宝坻","静海","宁河","蓟县","其它"};
String city4[] = {"渝中","大渡口","江北","沙坪坝","九龙坡","南岸","北碚","万盛","双桥","渝北","巴南","万州","涪陵","黔江","永川","合川","江津","南川","长寿","綦江","潼南","荣昌","璧山","大足","铜梁","梁平","城口","垫江","武隆","丰都","奉节","开县","云阳","忠县","巫溪","巫山","石柱","秀山","酉阳","彭水"};
String city5[] = {"哈尔滨","齐齐哈尔","鹤岗","双鸭山","鸡西","佳木斯","七台河","黑河","牡丹江","大庆","绥芬河","尚志","伊春","其它"};
String city6[] = {"长春","吉林","抚松","龙井","梅河口","四平","辽源","通化","延吉","集安","大安","浑江","白山","松原","白城","延边","其它"};
String city7[] = {"沈阳","大连","鞍山","本溪","丹东","抚顺","锦州","葫芦岛","辽阳","营口","盘锦","阜新","朝阳","铁岭","东港","其它"};
String city8[] = {"呼和浩特","包头","乌海","赤峰","通辽","鄂尔多斯","乌兰察布","呼伦贝尔","满洲里","海拉尔","乌兰浩特","锡林浩特","东胜","其它"};
String city9[] = {"乌鲁木齐","哈密","伊犁","喀什","石河子","库尔勒","和田","克拉玛依","奎屯","昌吉","博乐","吐鲁番","阿勒泰","其它"};
String city10[] = {"兰州","敦煌","天水","金昌","白银","武威","嘉峪关","酒泉","定西地区","平凉地区","庆阳地区","陇南地区","张掖地区","甘南州","临夏州","其它"};
String city11[] = {"西宁","海南州","黄南自治州","湟中县","格尔木","贵德县","尖扎县","乌兰县","其它"};
String city12[] = {"西安","铜川","延安","宝鸡","韩城","汉中","咸阳","渭南","华阴","榆林","安康","其它"};
String city13[] = {"太原","大同","侯马","阳泉","五台山","运城","长治","晋城","晋中","朔州","忻州","临汾","其它"};
String city14[] = {"济南","青岛","烟台","泰安","威海","蓬莱","曲阜","潍坊","淄博","德州","临沂","日照","荣城","文登","枣庄","聊城","荷泽","莱阳","莱州","龙口","济宁","东营","滨州","其它"};
String city15[] = {"成都","攀枝花","绵阳","乐山","九寨沟","江油","南充","宜宾","自贡","泸州","内江","德阳","雅安","广元","遂宁","广安","达州","巴中","眉山","资阳","其它"};
String city16[] = {"贵阳","安顺","遵义","六盘水","铜仁地区","毕节地区","黔西南","黔东南","黔南","其它"};
String city17[] = {"昆明","曲靖","大理","丽江","西双版纳","楚雄","红河州","景洪","瑞丽","玉溪","保山","昭通","个旧","怒江","其它"};
String city18[] = {"南宁","桂林","北海","柳州","梧州","衡阳","玉林","防城港","钦州","其它"};
String city19[] = {"广州","深圳","珠海","佛山","汕头","中山","湛江","江门","肇庆","东莞","顺德","南海","三水","新会","惠州","潮阳","潮州","从化","番禺","茂名","梅州","河源","开平","普宁","清远","韶关","台山","阳江","化州","雷州","四会","云浮","其它"};
String city20[] = {"长沙","岳阳","衡阳","株洲","郴州","怀化","常德","大庸","张家界","邵阳","湘潭","韶山","永州","娄底","其它"};
String city21[] = {"武汉","黄石","十堰","襄樊","宜昌","荆州","鄂州","沙市","神农架","随州","孝感","黄冈","大冶","咸宁","恩施","荆门","洪湖","仙桃","其它"};
String city22[] = {"南昌","九江","景德镇","鹰潭","赣州","丰城","抚州","庐山","萍乡","上饶","新余","吉安","宜春","其它"};
String city23[] = {"杭州","宁波","温州","嘉兴","绍兴","金华","台州","丽水","舟山","衢州","湖州","义乌","其它"};
String city24[] = {"南京","苏州","南通","扬州","徐州","连云港","常州","无锡","常熟","张家港","宜兴","盐城","江阴","丹阳","高邮","淮阴","江都","昆山","泰州","吴江","锡山","镇江","扬中","启东","太仓","靖江","宿迁","其它"};
String city25[] = {"合肥","黄山","芜湖","铜陵","安庆","蚌埠","马鞍山","淮北","宣城地区","青阳","淮南","滁州","宣州地区","宁国","东港","阜阳","宿州","巢湖","六安","池州","其它"};
String city26[] = {"福州","厦门","三明","泉州","漳州","晋江","莆田","武夷山","石狮","南平","宁德","福清","福安","龙岩","南安","其它"};
String city27[] = {"海口","三亚","通什","文昌","昌江","琼海","万宁","五指山","儋州","其它"};
String city28[] = {"郑州","开封","洛阳","三门峡","平顶山","新乡","南阳","安阳","登封","焦作","汝州","商丘","许昌","周口","益州","禹州","项城","鹤壁","濮阳","漯河","驻马店","偃师","其它"};
String city29[] = {"石家庄","张家口","秦皇岛","保定","沧州","承德","衡水","任丘","任邱","廊坊","唐山","邯郸","衡水","清河县","邢台","其它"};
String city30[] = {"银川","中卫","石嘴山","吴忠","固原","其它"};
String city31[] = {"拉萨","日喀则地区","那曲地区","山南地区","昌都地区","山南地区","阿里地区","其它"};
String city32[] = {"澳门","其它"};
String city33[] = {"中西","东区","九龙城","观塘","南区","深水","湾仔","黄大仙","油尖旺","离岛","葵青","北区","西贡","沙田","屯门","大埔","荃湾","元朗","其它"};
String city34[] = {"台北","高雄","基隆","台中","台南","新竹","嘉义","台北","宜兰","新竹","桃园","苗栗","台中县","彰化县","南投县","嘉义县","云林县","台南县","高雄县","屏东县","台东县","花莲县","澎湖县","其它"};
String city35[] = {"其它"};
String provinceName[] = {"北京","上海","天津","重庆","黑龙江","吉林","辽宁","内蒙古","新疆","甘肃","青海","陕西","山西","山东","四川","贵州","云南","广西","广东","湖南","湖北","江西","浙江","江苏","安徽","福建","海南","河南","河北","宁夏","西藏","澳门","香港","台湾","其它"};
public static void main(String[] args)throws Exception{
Object str=new SelectPlace().eval(2);
String a[]=(String[])str;
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static void debuge(String info){
System.out.println(info);
}
public Object eval(int i)throws Exception{
String s="class Temp{";
s+="public static Object rt(){";
s+="SelectPlace sp=new SelectPlace();";
s+="return sp.city"+i+";";
s+="/n}";
s+="}";
File f;
f=File.createTempFile("JavaRuntime",".java",new File(System.getProperty("user.dir")));
f.deleteOnExit();
String fileName=f.getName();
PrintWriter out=new PrintWriter(new FileOutputStream(f));
out.println(s);
out.flush();
out.close();
final com.sun.tools.javac.Main javac=new com.sun.tools.javac.Main();
String[] arg=new String[]{"-d",System.getProperty("user.dir"),fileName};
int status=javac.compile(arg);
if(status!=0){
debuge("没有编译成功");
return null;
}else{debuge("ok");}
Class className=Class.forName("Temp");
Method rt=className.getMethod("rt",new Class[]{});
return rt.invoke(null,null);//运行并返回值
}
}
-------------------------------------------------------------------------------------------------------------------------
rt.invoke(null,null);//
第一个参数,当rt函数为static时使用.
第二个是rt的形参个数
class的getMethod()
public Method getMethod(String name, Class... parameterTypes) throws NoSuchMethodException, SecurityException
-
返回一个
Method
对象,它反映此Class
对象所表示的类或接口的指定公共成员方法。name
参数是一个String
,用于指定所需方法的简称。parameterTypes
参数是按声明顺序标识该方法形式参数类型的Class
对象的一个数组。如果parameterTypes
为null
,则按空数组处理。如果
name
是 "<init>" 或 "<clinit>",则将引发NoSuchMethodException
。否则,要反映的方法由下面的算法确定(设 C 为此对象所表示的类):- 在 C 中搜索任一匹配的方法。如果找不到匹配的方法,则将在 C 的超类上递归调用第 1 步算法。
- 如果在第 1 步中没有找到任何方法,则在 C 的超接口中搜索匹配的方法。如果找到了这样的方法,则反映该方法。
程序在Eclipse下编译成功,但是不能在其中运行,只能用java命令运行,可能是Eclipse路径的问题