如何使Java方法通用?

如何使Java方法通用?,java,generics,methods,Java,Generics,Methods,我目前正在从事一个项目,我必须使一些方法更通用,以使代码更具可读性 这些项目有两个类:Box和MyList。 “Box”的构造函数接受泛型参数;“MyList”的构造函数只有一个 public class Box<A, B> {} 这是盒子的类别 public class MyList<T> {} 这就是我要上的课 在类“Box”中,我有一个如下所示的方法: public static MyList enclose (Box <MyList <Intege

我目前正在从事一个项目,我必须使一些方法更通用,以使代码更具可读性

这些项目有两个类:Box和MyList。 “Box”的构造函数接受泛型参数;“MyList”的构造函数只有一个

public class Box<A, B> {}
这是盒子的类别

public class MyList<T> {}
这就是我要上的课

在类“Box”中,我有一个如下所示的方法:

public static MyList enclose (Box <MyList <Integer, String>> t) {
// Here comes some code that is not important right now.
}
我现在想要的是,使这个方法通用,这样它不仅像一个盒子一样接受参数。有人有主意吗

试试看

public static <T> MyList<T> enclose(T t) {
    return new MyList<T>();
}

public static void main(String[] args) {
    MyList<Box<String, String>> res = enclose(new Box<String, String>());
}

现在还不完全清楚您想要做什么,并且泛型参数的数量与您的类不匹配,但也许这就可以了

public <T> static MyList<T> enclose (Box <MyList <T>, String> t) {
// Here comes some code that is not important right now.
}
或者,如果您不想谈论MyList,可以这样:

public <T> static T enclose (Box <T, String> t) {
// Here comes some code that is not important right now.
}
第二个版本将Box对象的第一个泛型参数的类型作为其返回类型

public static <T, S> MyList<T> enclose(Box <MyList<T>, S> box) {}
Java没有,因此上述内容是Java所允许的通用性

或者,不需要MyList


希望这两个示例能让您大致了解如何在特定情况下声明泛型。

搜索google真的那么难吗?->我不认为你能以一种有意义的方式做到这一点,除非你在这里为你想要支持的所有类都有一个公共接口。或者你是在问如何防止硬编码?听起来你只是想要一个成员变量,它接受Object而不是Box类型的参数
public static <T, S> T enclose(Box <T, S> box) {}