当前位置: 首页 > 面试题库 >

在Java中按名称设置变量

阎功
2023-03-14
问题内容

我希望通过以下方式在Java中实现某些功能

class Foo{
 private int lorem; //
 private int ipsum;

 public setAttribute(String attr, int val){
  //sets attribute based on name
 }

 public static void main(String [] args){
  Foo f = new Foo();
  f.setAttribute("lorem",1);
  f.setAttribute("ipsum",2);
 }

 public Foo(){}
}

…根据变量名设置变量,而无需硬编码变量名并且不使用任何其他数据结构。这可能吗?


问题答案:

这是setAttribute使用反射实现的方式(我已将函数重命名;针对不同的字段类型有不同的反射函数):

public void setIntField(String fieldName, int value)
        throws NoSuchFieldException, IllegalAccessException {
    Field field = getClass().getDeclaredField(fieldName);
    field.setInt(this, value);
}


 类似资料:
  • 问题内容: 我经常在使用MySQL的PHP​​脚本中看到类似的内容 我从来没有对任何项目都这样做,所以我对此有两个基本问题。 这仅是通过PDO完成吗? 如果不是PDO特定的事情,那么这样做的目的是什么?我意识到它正在为mysql设置编码,但是我的意思是,我从未使用过它,所以为什么要使用它? 问题答案: 每当您要将数据发送到具有纯ASCII无法表示的字符(例如“ñ”或“ö”)的服务器时,都需要使用它

  • 我在Java学习线程,有一个这样的小程序。我创建一个线程,并用它来创建另一个线程。但是我不能改变第二个线程的名称。有人能解释为什么会这样吗?此外,Thread.sleep(100)意味着主线程将Hibernate100毫秒是正确的吗?谢谢。 该计划的结果如下: 编辑:如果我将getName()更改为Thread。currentThread()。getName()然后一切都按预期工作。它们之间有什么

  • 问题内容: 示例代码: 现在,说我想让用户输入一个字符串: 然后,说出用户输入。我将如何检索命名的变量并对其进行处理?像这样: 我抬头看了一些东西,却没发现太多。我确实找到了对“反射API”的引用,但是对于这一简单任务而言,它似乎太复杂了。 有没有办法做到这一点,如果是的话,那是什么?如果“反射”确实有效并且是唯一的方法,那么我将如何使用它来做到这一点?它的教程页面包含了各种我无法理解的内部内容。

  • 我想为Nashorn提供一个函数,比如: 上面的代码不编译,因为需要一个对象,而lambdas不是对象。我如何将javascript名称设置为java函数? 编辑澄清: 在JavaScript中,我们可以这样写: 如果我用Java编写了,我如何将该函数分配给JavaScript变量?

  • 问题内容: 我有一个包含变量名称的字符串。我想获取该变量的值。 是否有可能访问该值使用? 问题答案: 我建议您改用: 通过执行操作创建地图 然后改变 至 并使用访问值

  • 问题内容: 当前,我们的应用程序使用javax.mail.MailMessage使用javax.mail发送电子邮件。我们通过以下方式设置电子邮件的“发件人”标题: 这样做很好,但我们希望使“发件人”部分更加用户友好。当前,收到电子邮件的人将在其收件箱的“发件人”部分中看到“ mail@companyxyz.com”。相反,我们希望他们在那里看到“ XYZ公司”。我认为这可能是通过addHeade