java接收不同的类对象(包含实体类)的公共方法

什么不说先上代码,代码上有具体的注释,在此以实体类对象为示意

1、实体类代码

	首先是实体类代码,仅用一个实体类演示,读者可自行增加实体类,我实体类用的是lombok来自行创建get、set方法和有参无参方法
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Users implements Serializable {
    @Id
    private String id;
    private String phone;
    private String email="ssssddd@qq.com";
    private String username;
    private String password="123";
    private String isfirst;
    private String salt;
}

2.发送实体类的方法

public class UserServiceEGImpl{
	public void testUsers() {
		//获取需要被发送的实体类
        Users users = new Users();
        //调用接收实体类的方法
        BlankNumUtils.usersBlankNum(Users.class, users);
    }
}

3.接收不同实体类的公共方法

public class BlankNumUtils {
	//	<U>和Class<U> clazz用来接收实体类(或者其他类)对象的反射 new Users().class,
	//U cla 用来接收实体类对象(或者其他类)new Users()
    public static <U> void usersBlankNum(Class<U> clazz, U cla) {
    	//将传过来的对象进行赋值处理,
    	//此时u可用来代表传过来的对象(本示意中是Users),
    	//此时可以用u调用传过来对象的方法
        U u = clazz.cast(cla);
        //以下是验证此示意中实体类可被操作了
		//getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
		//.getClass()是一个对象实例的方法,只有对象实例才有这个方法,具体的类是没有的
        for (Field field : u.getClass().getDeclaredFields()) {
        	//允许获取实体类private的参数信息 field.setAccessible(true);
            field.setAccessible(true);
            try {
                System.out.println(field.getName()+":::"+String.valueOf(field.get(u)));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
}

4.最终的输出数据展示,表明接收并操作成功(注意:我的实体类仅仅赋值了两个数据,所以会有null数据)

实体类接收成功::id:::null
实体类接收成功::phone:::null
实体类接收成功::email:::ssssddd@qq.com
实体类接收成功::username:::null
实体类接收成功::password:::123
实体类接收成功::isfirst:::null
实体类接收成功::salt:::null

以上就是本次文章分享,欢迎各位指正,共同探讨java的奥秘

可以通过使用多态和依赖注入来实现根据传入不同的实体调用不同的service操作。 首先,定义一个父类或接口包含需要的共同方法和属性,然后让不同实体类继承该父类或实现该接口。接着,定义一个service接口包含针对该父类或接口的操作方法,同时定义多个不同的service实现类,分别对应不同实体类。 最后,在需要调用service的地方,通过依赖注入的方式传入不同的service实现类,根据传入的实体对象的类型,调用对应的service操作即可。 示例代码: ```java // 父类或接口 public abstract class BaseEntity { // 共同属性和方法 } // 实体类 public class EntityA extends BaseEntity { // 实体A特有属性和方法 } public class EntityB extends BaseEntity { // 实体B特有属性和方法 } // service接口 public interface BaseService<T extends BaseEntity> { void doSomething(T entity); } // service实现类 @Service public class ServiceA implements BaseService<EntityA> { @Override public void doSomething(EntityA entity) { // 对实体A进行操作 } } @Service public class ServiceB implements BaseService<EntityB> { @Override public void doSomething(EntityB entity) { // 对实体B进行操作 } } // 调用service @Service public class MyService { @Autowired private BaseService<EntityA> serviceA; @Autowired private BaseService<EntityB> serviceB; public void doSomething(BaseEntity entity) { if (entity instanceof EntityA) { serviceA.doSomething((EntityA) entity); } else if (entity instanceof EntityB) { serviceB.doSomething((EntityB) entity); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值