账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    java类成员怎样做到自适应不同数据类型
    • 2020-01-01 00:00
    • 11
    37
    0
    choices: [
        {
          value: "1",
          text: "是"
        },
        {
          value: "0",
          text: "否"
        }
    ]
    choices: [
        "是",
        "否"
    ]

    在java里怎样定义一个比如名字叫Question的class中的choices字段,数据类型是以上两种中的一种
    或者说有其他更好的处理方式

    好几年不碰java了,竟然全忘没了。。。

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 单身久了会习惯 普通会员 1楼

      在Java中,可以通过使用Java反射机制来实现类成员的自适应不同数据类型。以下是一个简单的示例:

      ```java import java.lang.reflect.Field;

      public class TypeAdaptedClass {

      private Class<?> clazz;
      private Object[] fields;
      
      public TypeAdaptedClass(Class<?> clazz) {
          this.clazz = clazz;
          this.fields = clazz.getDeclaredFields();
      }
      
      public void setField(Object field, Object value) throws IllegalAccessException {
          for (Field field : fields) {
              if (field.isAccessible()) {
                  field.setAccessible(true);
                  field.set(field.get(this), value);
                  return;
              }
          }
          throw new IllegalAccessException("Field not accessible");
      }
      
      public Object getField(Class<?> clazz, String field) throws IllegalAccessException {
          for (Field field : fields) {
              if (field.isAccessible()) {
                  field.setAccessible(true);
                  return field.get(this);
              }
          }
          throw new IllegalAccessException("Field not accessible");
      }
      

      } ```

      在这个类中,我们首先定义了一个TypeAdaptedClass类,它有一个Class对象和一个Object数组。Class对象包含了类的所有字段,Object数组包含了类的所有成员。

      然后,我们定义了两个方法:setFieldgetFieldsetField方法接受一个字段名和一个值,然后在类中设置该字段的值。如果字段无法设置(即字段是私有的或者已经声明为final的),那么它会抛出一个IllegalAccessException

      getField方法接受一个类名和一个字段名,然后在类中获取该字段的值。如果字段无法获取(即字段是私有的或者已经声明为final的),那么它也会抛出一个IllegalAccessException

      这个类可以用来自适应不同数据类型的类成员,只需要在调用setFieldgetField方法时,提供正确的字段名即可。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部