java泛型问题,如何实现这样的功能

vcshcn 2007-04-22 09:04:25
这段代码片段会报个warning,如何修改去掉警告呢?或者如何实现这个效果?
public static HashMap<Class, IService> services = null;

public static <T extends IService> T getService(Class<T> klass) {
return (T) services.get(klass);
}

我想通过传入class对象,map返回的对象可以不进行类型转换就使用,如这样:
class TestService implements IService {}
putService(TestService.class, new TestService());
TestService test = getService(TestService.class)
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
likgui 2007-04-29
  • 打赏
  • 举报
回复
学习
laiwusheng 2007-04-29
  • 打赏
  • 举报
回复
java6.0支持泛型了
vcshcn 2007-04-29
  • 打赏
  • 举报
回复
擦除类型会报个warning,如何不报warning呢
sword_caihui 2007-04-24
  • 打赏
  • 举报
回复
看看这样是不是,代码如下:
public interface IService {
}
------------------------------
public class Server implements IService {
private String message;

public Server(String str) {
this.message = str;
}

public void test() {
System.out.println("server"+this.message);
}
}
------------------------------
public class Server2 implements IService {
private String message;

public Server2(String str) {
this.message = str;
}

public void test() {
System.out.println("server2"+this.message);
}
}
------------------------------
import java.util.HashMap;

public class Template<T extends IService> {

private static HashMap<Class, IService> services = new HashMap<Class, IService>();

public static <T extends IService> T getService(Class<T> klass) {
return (T) services.get(klass);
}

public static <T extends IService> T putService(T ser) {
services.put(ser.getClass(), ser);
return ser;
}
}
------------------------------
public class MainTest {
public static void main(String[] args) {
Template<IService> temp = new Template<IService>();
temp.putService(new Server("test"));
temp.putService(new Server2("test2"));

temp.getService(Server.class).test();
temp.getService(Server2.class).test();
}
}

laiwusheng 2007-04-24
  • 打赏
  • 举报
回复
不支持吧

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧