Java 使用字符串值作为变量名的步骤

Java 使用字符串值作为变量名的步骤,java,Java,是否可以使用字符串作为变量名。。就像这个例子一样- String musicPlaying = "music2"; Music music1 = new Music("blaalla"); Music music2 = new Music("blalala"); Music music3 = new Music("balaada"); if(!musicPlaying.stillPlaying) { // As you can see i am using string as a variab

是否可以使用字符串作为变量名。。就像这个例子一样-

String musicPlaying = "music2";
Music music1 = new Music("blaalla");
Music music2 = new Music("blalala");
Music music3 = new Music("balaada");

if(!musicPlaying.stillPlaying) { // As you can see i am using string as a variable name.
  changeMusic();
}

不,这在Java中不受支持

stillPlaying
String
上不作为方法(或变量)存在

正如下面的评论所建议的,通过一些反思,这可能是可行的,但是引用另一个

你可以用反省做各种愚蠢的把戏。但你是 基本上打破了课堂上的“保修无效”标签 就在你做这件事的那一刻


不可以。但是您可能想研究使用映射来代替。

在Java中无法做到这一点,但您几乎可以使用映射来做到这一点

Map<String, Music> map = new HashMap<String, Music>();
map.put("music1", music1);
map.put("music2", music2);
map.put("music3", music3);

if(map.get(musicPlaying).stillPlaying) {
  // happy listening 
}
Map Map=newhashmap();
地图放置(“音乐1”,音乐1);
地图放置(“music2”,music2);
地图放置(“music3”,music3);
if(map.get(musicPlaying.stillPlaying){
//愉快的倾听
}

您可以将这些值关联(映射)到音乐对象。下面是一个例子:

Map<String, Music> musics = new HashMap<>();
String musicPlaying = "music2";
musics.put("music1", new Music("blaalla"));
musics.put("music2", new Music("blalala"));
musics.put("music3", new Music("balaada"));

if(!musics.get(musicPlaying).stillPlaying) { // As you can see i am using string as a variable name.
  changeMusic();
}
Map music=new HashMap();
字符串musicPlaying=“music2”;
musics.put(“music1”,新音乐(“blaalla”);
musics.put(“music2”,新音乐(“blalala”);
musics.put(“music3”,新音乐(“Balada”);
如果(!music.get(musicPlaying.stillPlaying){//正如您所看到的,我使用字符串作为变量名。
改变音乐();
}
我用了一个开关盒

Switch (string)
{
    case "string1":
    string1();
    break;
    case "string2":
    string2();
    break;
}

我不明白你的问题。在本例中,您没有这样做。您正在调用构造函数。我确信您的问题没有在代码中表达出来。@RuchiraGayanRanaweera Java不支持变量的动态命名。不,这是不可能的。但是您可以使用
地图。然后做
if(map.get(musicPlaying.stillPlaying)
。看。是的,人们已经给我看了。。顺便说一句,我喜欢你的个人资料图像,生活的游戏,就像过去一样,嗯?当编程看起来像游戏时:)@IsraelG。如果不希望抛出NPE,请确保
music.get(musicPlaying)
不返回
null
<代码>音乐m=Music.get(音乐播放);如果(m!=null&&!m.stillPlaying){changeMusic();}
@ZouZou:如果你正确地封装了东西,
musicPlaying
将始终是一个有效的键(making
musics.get(musicPlaying)
始终是一个
Music
)——如果不是,那就是一个错误。你不一定要检查空值,因为从长远来看,在这种情况下,你最好得到一个NPE,而不是用空值检查来掩盖它。哇!我被引用了!:)doffs是你的高级反射知识的上限:你能解释一下这与OP的问题有什么关系吗?字符串是动态的。我们永远不知道它将是什么,但不管它是什么,有另一个同名的变量,它可能是在字符串变量填充了一些东西时设置的。因此,要“使用字符串值作为变量名”,请将其大小写转换为根据字符串调用的变量(或方法)名。请重新阅读。OP的问题不是一般的字符串,而是动态变量名。字符串的开关大小写不能解决问题。“变量名”(而不是值)的切换情况会有所帮助,但正如上面大家所指出的那样,在Java中这是不可能的。