我有一个必须接受通用对象的Java方法。
public <T> void myMethod(T anyClassObject) {
//handle code
}
我需要创建一个接受任何类实例的方法。然后我必须将对象保存在数据库中。实际上我必须编写一个应用程序,它将使mongoTemplate API变得更加简单。
在我的应用程序中,用户不需要配置mongoTemplate。这一切都将在我的申请中。用户可以简单地使用我的代码。
因此,为了保存到数据库中,必须像往常一样指定持久化实体类。
例如,
mongoTemplate.createCollection(One.class)
对于其他实体,
mongoTemplate.createCollection(Two.class)
如上所述。
我必须编写一个可以像
那样共同访问的方法One one = new One();
createTable(one)
or
Two two = new Two();
createTable(two)
想用泛型来做。
答案 0 :(得分:1)
你可以这样做
public <T> void myMethod(T anyClassObject) {
//whatever you want to do
if(anyClassObject instanceof ClassA){
ClassA a=(ClassA)anyClassObject;
//perform classA specific manipulations you want
}
//likewise for all the types you want to handle
}
它将接受任何类型的对象,并为您提供所需的自由。
希望它有所帮助!
祝你好运!答案 1 :(得分:0)
您可以尝试使用此代码。 你在找别的吗?
//test generic class
public class Test <T> {
public static void main(String[] args) {
new Test<String>().testMethod("test");;
new Test<Integer>().testMethod(1);;
new Test<Long>().testMethod(10L);
}
//test method takes any object
public void testMethod(T obj){
System.out.println(obj.getClass() + " " +obj);
}
}
}
访问POJO方法
//test method takes any object
public void testMethod(T obj){
System.out.println(obj.getClass() + " " +obj);
if(obj instance of YourPOJO){
YourPOJO pojo = (YourPOJO )obj;
System.out.println(pojo.getThing1());
}
if(obj instance of YourPOJO1){
YourPOJO1 pojo1 = (YourPOJO1 )obj;
System.out.println(pojo1.getThing1());
}
}
}
答案 2 :(得分:0)
泛型方法中Java对象的通用创建可以这样完成:
public class Test {
public static void main(String[] args) {
System.out.println(generateAndToString(A.class));
System.out.println(generateAndToString(B.class));
accessMemberWithReflection(new A());
accessMemberWithReflection(new B());
}
public static <T> String generateAndToString(Class<T> clazz) {
System.out.println(clazz.getName());
try {
T newInstance = clazz.newInstance();
return newInstance.toString();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return "Something went wrong";
}
public static <T> void accessMemberWithReflection(T object) {
try {
Method declaredMethod = object.getClass().getDeclaredMethod("toString");
String toStringOutput = (String) declaredMethod.invoke(object);
System.out.println(toStringOutput);
} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
-
public class A {
@Override
public String toString() {
return "B";
}
}
-
public class B {
@Override
public String toString() {
return "B";
}
}
-