1

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

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

public class Box<A, B> {}

那是盒子的类。

public class MyList<T> {}

这就是 MyList 的类。

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

public static MyList enclose (Box <MyList <Integer, String>> t) {
// Here comes some code that is not important right now.
}

我现在想要的是使该方法具有通用性,以便它不仅可以接收像 a 之类的参数Box。有人有想法吗?

4

3 回答 3

0

尝试

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>());
}
于 2013-01-10T09:58:30.490 回答
0

目前尚不完全清楚您想要做什么,并且泛型参数的数量与您的类不匹配,但也许这可以工作?

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对象的第一个泛型参数的类型作为其返回类型...

于 2013-01-10T09:58:46.720 回答
0
public static <T, S> MyList<T> enclose(Box <MyList<T>, S> box) {}

Java 没有更高种类的类型,因此上面的内容与 java 允许的一样通用。

或者,无需拥有MyList<T>

public static <T, S> T enclose(Box <T, S> box) {}

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

于 2013-01-10T10:03:29.757 回答