public void initialize(InvoiceEnum constraintAnnotation) { Class<?> enumClazz = constraintAnnotation.value(); Object[] enumConstants = enumClazz.getEnumConstants(); if (null == enumConstants) { return; } Method method; try { method = enumClazz.getMethod(constraintAnnotation.method()); } catch (Exception e) { logger.error("获取枚举类方法异常",e); throw new BusinessException(CommonEnums.BUSINESS_ERROR, "枚举未找到方法" + constraintAnnotation.method()); } if (null == method) { throw new BusinessException(CommonEnums.BUSINESS_ERROR, "枚举未找到方法" + constraintAnnotation.method()); } ReflectionUtils.makeAccessible(method); try { for (Object enumConstant : enumConstants) { values.add(method.invoke(enumConstant).toString()); } values.add(""); } catch (Exception e) { throw new BusinessException(CommonEnums.BUSINESS_ERROR, "获取枚举值失败"); } }
时间: 2024-02-14 16:31:43 浏览: 153
这段代码是一个方法的实现,根据传入的注解参数来初始化一些枚举值。让我解释一下这段代码的功能:
1. 首先,从注解参数中获取枚举类型的 Class 对象。
2. 接着,通过反射获取枚举类中的所有枚举常量。
3. 然后,使用反射获取指定的方法。
4. 如果方法不存在,则抛出异常。
5. 通过反射调用方法获取每个枚举常量的值,并将其添加到一个值列表中。
6. 最后,将一个空字符串添加到值列表中。
这段代码主要用于初始化枚举常量的值列表,并在需要时进行验证。如果在获取枚举类型、方法或枚举值时出现异常,将抛出自定义的 BusinessException 异常。
希望对你有所帮助!如果你还有其他问题,请随时提问。
相关问题
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WinFormsApp16 { public class student { private int stuno; private string stuname; private int stuage; private string stusex; private string stuspeciality; public student(int myno ,string myname, int myage ,string mysex,string myspecility) { this.Stuno = myno; this.Stuname = myname; this.Stuage = myage; this.Stusex = mysex; this.Stuspeciality = myspecility; } public int Stuno { get => stuno; } public string Stuname { get => stuname; } public string Stusex { get => stusex; } public string Stuspeciality { get => stuspeciality; set => stuspeciality = value; } public int Stuage { get => stuage; set => stuage = value; } } }把这段代码优化成输入信息后再只读
这段代码是 C# 语言的代码,可以通过在 Windows 系统上安装 Visual Studio 编辑器进行修改和运行。
以下是将该代码优化为输入信息后再只读的代码示例:
```csharp
using System;
using System.Windows.Forms;
namespace WinFormsApp
{
public partial class Form1 : Form
{
private int stuno;
private string stuname;
private int stuage;
private string stusex;
private string stuspeciality;
public Form1()
{
InitializeComponent();
}
private void btnSubmit_Click(object sender, EventArgs e)
{
stuno = int.Parse(txtStuno.Text);
stuname = txtStuname.Text;
stuage = int.Parse(txtStuage.Text);
stusex = txtStusex.Text;
stuspeciality = txtStuspeciality.Text;
// 显示信息
txtInfo.Text = $"学号:{stuno}\r\n姓名:{stuname}\r\n年龄:{stuage}\r\n性别:{stusex}\r\n专业:{stuspeciality}";
// 设置文本框只读
txtStuno.ReadOnly = true;
txtStuname.ReadOnly = true;
txtStuage.ReadOnly = true;
txtStusex.ReadOnly = true;
txtStuspeciality.ReadOnly = true;
}
}
}
```
这段代码实现了一个简单的 Windows 窗体应用程序,包含了一个输入学生信息的表单,用户在填写完信息后,点击提交按钮,会将学生信息显示在一个文本框中,并将输入框设置为只读状态,不允许再次编辑。
public partial class SelectUser : Form { public SelectUser() { InitializeComponent(); } private void SelectUser_Load(object sender, EventArgs e) { DataTable dt = SqlHelper.GetDataSet("select UserGUID,UserCode,UserName from MyUser"); this.dataGridView1.DataSource = dt; } private void btnSelect_Click(object sender, EventArgs e) { DataTable dt = SqlHelper.GetDataSet($"select UserGUID,UserCode,UserName from MyUser where UserCode like '%{this.txtCondition.Text}%' or UserName like '%{this.txtCondition.Text}%' "); this.dataGridView1.DataSource = dt; } private void button2_Click(object sender, EventArgs e) { var row = this.dataGridView1.SelectedRows; if (row.Count <= 0) { MessageBox.Show(""); return; } var UserGUID = row[0].Cells["UserGUID"].Value; if ((Guid)UserGUID == MyUser.UserGUID) { MessageBox.Show("不能删除当前用户"); return; } if(MessageBox.Show("确定要删除选中的用户吗","提示",MessageBoxButtons.OKCancel) == DialogResult.OK) { string strSql = "delete MyUser where UserGUID = @UserGUID"; int ret = SqlHelper.ExecuteCommand(strSql,new System.Data.SqlClient.SqlParameter("@UserGUID", UserGUID)); if (ret > 0) { MessageBox.Show("删除成功"); DataTable dt = SqlHelper.GetDataSet($"select UserGUID,UserCode,UserName from MyUser where UserCode like '%{this.txtCondition.Text}%' or UserName like '%{this.txtCondition.Text}%' "); this.dataGridView1.DataSource = dt; } else { MessageBox.Show("删除失败"); }
这段代码是一个 Windows 窗体应用程序的部分类 SelectUser。代码中有一个加载事件 SelectUser_Load,该事件在窗体加载时执行。在该事件中,使用 SqlHelper 类从数据库中查询数据,并将结果绑定到 dataGridView1 控件的 DataSource 属性上。
代码还包含了 btnSelect_Click 事件,该事件在点击按钮 btnSelect 时执行。在该事件中,根据用户输入的条件使用 SqlHelper 类执行带有 LIKE 子句的查询,并将结果绑定到 dataGridView1 控件的 DataSource 属性上。
另外还有一个 button2_Click 事件,该事件在点击按钮 button2 时执行。在该事件中,首先判断是否选中了行,如果没有选中任何行则弹出消息框并返回。然后,获取选中行的 UserGUID 值,并与 MyUser 类中的 UserGUID 值进行比较。如果相等,则弹出消息框并返回。如果不相等,则执行删除操作。删除操作是通过执行 SQL DELETE 语句,使用 SqlHelper 类的 ExecuteCommand 方法传递参数来实现的。最后,根据删除结果显示相应的消息框,并重新查询数据并绑定到 dataGridView1 控件上。
需要注意的是,这段代码没有完整的异常处理和参数验证,请根据实际情况进行补充。
阅读全文