关于泛型方法使用的一些问题

关于泛型方法使用的一些问题

就是比如有一个类A需要对其做逻辑处理,这时将这个类的对象通过传参进入到一个处理方法内a(),通过这个方法进行逻辑处理,但是后面又有一个类B和上一个类A的处理逻辑一模一样,但是是不同的类,而且这两个类没有任何包含继承之类的关系,那这时候需要再写一个和之前的方法a()一模一样的逻辑的方法b()处理类B,但是这样这两个处理方法就冗余了,然后我就想着写泛型方法来处理,一个方法处理两个甚至多个类的对象,但是后来发现有问题,就是泛型方法内部需要调用这两个不用类对象的不同方法,这时就无法处理了,因为这两个类没关系而且不一样,那如果写死泛型方法中T的对象的调用方法,那还是只能给一个类用,无法通用,后来尝试通过反射根据传入的T去动态的调用传入的类A/B的特有方法,也不行,请问各位有啥好的办法吗?

  1. 对于每个类的方法都不一样的情况下,可以使用策略模式,根据不同的类使用各自的策略。

  2. 对于你想处理的类如果有相似之处,可以提取出一个公共的抽象类或者接口,然后使用这个抽象类或接口去做处理,各个子类都可以传入。

方法1.如果你的类A和类B高度相似但没有继承关系
你可以定义一个基类O,让A和B都继承O
方法2.定义接口,让A和B都实现同一个接口
这样你的公共函数只需要处理它们相同的部分,而不同的部分由类内部的接口函数自行处理

除非你的业务非常复杂 不然建议还是直接分开写 非要写在一起参考下面这段
public static void classTest(Object tClass) {
if (tClass instanceof a) {
try {
Method method = tClass.getClass().getMethod("sun");
try {
method.invoke(new a(), null);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
}

    } else if (tClass instanceof b) {
        try {
            Method method = tClass.getClass().getMethod("sun1");
            try {
                method.invoke(new b(), null);
            } catch (IllegalAccessException | InvocationTargetException e) {
                e.printStackTrace();
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
    }


}

public static class a {
    public void sun() {
        System.out.println("11");
    }
}

public static class b {
    public void sun1() {
        System.out.println("222");
    }
}