2013-07-27 194 views
-2

都有这个接口:获得一个泛型类型实现

public interface Cloneable<T> 
{ 
    public T clone(); 
} 

而且它的实现类:

public class Clazz implements Cloneable<Clazz> 
{ 
    public Clazz clone(); 
} 

我能避免这种?:

implements Cloneable<Clazz> 

这将是根本implements Cloneable。对不起,我的英语,我从俄罗斯...

+0

你......不。至少,不是如果你想使用泛型。 –

回答

1

那么你可以implements Cloneable,但随后你会使用原料类型,通常是一个坏主意。

为了增强打字的效果,您最好坚持使用自己的产品。

+0

我想这个类型是实现这个接口的那个类。类似于:public interface Cloneable sashok724

+0

@ user1936245:没有这样的构造。你必须明确地做到类型安全。 –

0

如果不包括<Clazz>,则将其视为使用<Object>

如果那是可以接受的,那就去吧。不建议,除非你真的想失去一些你的类型安全。

是不是有一个Java Puzzlers提到这...我找不到它。

发现它here。到约38:00他们正在讨论Glommer类型。

乔恩是正确的 - 原始类型与<Object>不一样,他们吓人。

+0

原始类型与仅仅使用''不同 - 即使对于与所讨论的参数无关的泛型类型,也会清除* whole *接口。原始类型是可怕的。 –

-2

解决方案:public interface Cloneable<T extends Cloneable<T>>