java - java:如何使用String值作为类名和变量名
问题描述
我有字符串变量,如
String android1="TextInputLayout";
String android1var = "customTextInputLayoutemail"
String android2="TextInputEditText";
String android2var = "textInputEditTextemail"
我想创建以下代码:
CustomTextInputLayout customTextInputLayoutemail = null;
TextInputEditText textInputEditTextemail = null;
customTextInputLayoutemail = new CustomTextInputLayout(this);
customTextInputLayoutemail.setLayoutParams(new CustomTextInputLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));
textInputEditTextemail = new TextInputEditText(this);
textInputEditTextemail.setHint("");
customTextInputLayoutemail.addView(textInputEditTextemail);
customTextInputLayoutemail.setHelperText("min "+MIN_PASSWORD_LENGTH+" characters");
我该如何更换
class Name CustomTextInputLayout with android1
class Name TextInputEditText with android2
variable Name textInputEditTextemail with android1var
variable Name customTextInputLayoutemail with android2var
解决方案
使用反射动态创建视图。获取constructor
使用getConstructor并使用newInstance方法创建实例。
示例代码:
String android1="TextInputLayout";
try {
Class<?> clazz = Class.forName("android.support.design.widget." + android1);
Constructor<?> constructor = clazz.getConstructor(Context.class);
Object object = constructor.newInstance(getContext());
if (object instanceof TextInputLayout) {
TextInputLayout textInputLayout = (TextInputLayout) object;
}else {
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (java.lang.InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
推荐阅读
- java - 从应用程序发送电子邮件时出现 javax.ejb.EJBException
- spss - 使用 ROC 曲线分析 SPSS 中的数据用于分类变量(名义)
- reactjs - React Query:何时使用 useInfiniteQuery 或 usePaginatedQuery 进行分页
- flutter - 为什么每次我将 ListView 添加到我的 Column 时,所有小部件都会消失?
- swiftui - 如何防止工作表在 SwiftUI 中使其后面的视图变暗或删除不必要的填充?
- angular - 我可以重新抛出 500 的角度 http 拦截器吗?
- sql - Node.js mssql 与 SQL 服务器的多个并发连接相互干扰
- reactjs - React Native 中的重新渲染问题
- javascript - setTimeout 限制 http 请求
- python - 从字典和列表生成字典