java 字符串组成一个函数名,调用这个函数

chenlilin6391210 2010-04-07 12:55:43
java字符串组成一个函数名,调用这个函数
public class sssss {

/**
* @param args
*/
public static void main(String[] args) {
//System.out.print("ssss".toUpperCase());
String bb = "item1";
//System.out.print(bb.substring(0,1).toUpperCase()+bb.substring(1,bb.length()));

get+bb.substring(0,1).toUpperCase()+bb.substring(1,bb.length())();
}

public static void getItem1() {

System.out.print("ddddddddddd");
}

public static void getItem2() {

System.out.print("ddddddddddd");
}
}
...全文
669 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Henry_Wu001 2011-05-13
  • 打赏
  • 举报
回复
lz是sb啊,把分给15楼,上面的才是正解。
sirtener 2010-04-07
  • 打赏
  • 举报
回复
用反射机制来实现。
liboofsc 2010-04-07
  • 打赏
  • 举报
回复
顶,找点反射的资料学习一下。
chesterwoo 2010-04-07
  • 打赏
  • 举报
回复
反射是java基本特性,任何一本java基础书都有介绍。搂主应该多点钻研精神才行啊!
king_jw 2010-04-07
  • 打赏
  • 举报
回复
学习了!
LuffySY 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenlilin6391210 的回复:]
能说点有用的吗,能解决吗
[/Quote]
跟你说的就是有用的,非要人家把代码都贴出来,自己不去研究下吗?

public class sssss
{
public static void main(String[] args)
{
String bb = "item1";
String aa = "get"+bb.substring(0,1).toUpperCase()+bb.substring(1,bb.length());
try {
Class c = Class.forName("sssss");
Method[] m=c.getMethods();
for(int i=0;i<m.length;i++)
{
if(m[i].getName().equals(aa))
{
m[i].invoke(null);
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void getItem1() {

System.out.print( "111111 ");
}

public static void getItem2() {

System.out.print( "222222 ");
}
}
justlearn 2010-04-07
  • 打赏
  • 举报
回复
另外提示,你需要拼出的字符串只是"getItem1"不需要其他东西,括号什么都不要
layznet 2010-04-07
  • 打赏
  • 举报
回复
自己去学习下反射,这类问题就迎刃而解了。反射很强大的。
justlearn 2010-04-07
  • 打赏
  • 举报
回复

import java.lang.reflect.Method;

public class sssss {

/**
* @param args
*/
public static void main(String[] args) throws Exception {
// System.out.print( "ssss ".toUpperCase());
String bb = "item1";
// System.out.print(bb.substring(0,1).toUpperCase()+bb.substring(1,bb.length()));

String aa = "get" + bb.substring(0, 1).toUpperCase()
+ bb.substring(1, bb.length());
Class<sssss> classType = sssss.class;

Method method = classType.getMethod(aa, null);
method.invoke(classType, null);
}

public static void getItem1() {

System.out.print("ddddddddddd ");
}

public static void getItem2() {

System.out.print("ddddddddddd ");
}
}


chenlilin6391210 2010-04-07
  • 打赏
  • 举报
回复
public class sssss {

/**
* @param args
*/
public static void main(String[] args) {
//System.out.print("ssss".toUpperCase());
String bb = "item1";
//System.out.print(bb.substring(0,1).toUpperCase()+bb.substring(1,bb.length()));

String aa = "get"+bb.substring(0,1).toUpperCase()+bb.substring(1,bb.length())+"()";
}

public static void getItem1() {

System.out.print("ddddddddddd");
}

public static void getItem2() {

System.out.print("ddddddddddd");
}
}






使用aa调用下面的方法
keeya0416 2010-04-07
  • 打赏
  • 举报
回复

能达到LZ目的,但也只是达到而已

package com.keeya.csdn.test;

public class Ssss {

/**
* @param args
*/
public static void main(String[] args) {
// System.out.print("ssss".toUpperCase());
String bb = "item2";
// System.out.print(bb.substring(0,1).toUpperCase()+bb.substring(1,bb.length()));

String str = "get" + bb.substring(0, 1).toUpperCase()
+ bb.substring(1, bb.length());

doMethod(str);
}

public static void doMethod(String str) {
if("getItem1".equals(str)){
getItem1();
}else if("getItem2".equals(str)){
getItem2();
}else{
System.out.println("请输入需要调用的方法名");
}
}

public static void getItem1() {

System.out.print("ddddddddddd");
}

public static void getItem2() {

System.out.print("cccccccccccc");
}
}

chenlilin6391210 2010-04-07
  • 打赏
  • 举报
回复
能说点有用的吗,能解决吗
LuffySY 2010-04-07
  • 打赏
  • 举报
回复
想调用 就直接用反射 功能很强大
yugong2009 2010-04-07
  • 打赏
  • 举报
回复
这样编译都通不过的
LZ的idea很好,学习……
chenlilin6391210 2010-04-07
  • 打赏
  • 举报
回复
不会呀
你不能给给例子
keeya0416 2010-04-07
  • 打赏
  • 举报
回复
你确认这个能跑?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧