为了减少类的依赖性,我想将参数(使用泛型类)发送到扩展某些类并实现接口的构造函数,例如
public interface SomeInterface{
public void someMethod();
}
public class MyFragment extends Fragment implements SomeInterface{
//implementation
}
//here is classs, that I need to create. T must extend Fragment and implements
//SomeInterface. But, I'm afraid, if I'll use MyFragment directly, it will create a
//dependence of SomeClass from MyFragment.
public class SomeClass /*generic?*/ {
public SomeClass(T parent);
}
可能吗?
此外,使用T类,我想使用T.getActivity()作为Context创建视图。
T必须扩展Fragment并实现SomeInterface
在这种情况下,您可以声明SomeClass
以下内容:
public class SomeClass<T extends Fragment & SomeInterface>
这将需要T
扩展Fragment
和实现类型的对象SomeInterface
。
此外,使用T类,我想使用T.getActivity()作为Context创建视图。
我不熟悉Android,但如果getActivity()
在中声明了公共实例方法,Fragment
则完全有可能在的实例上调用它T
,因为编译器将知道所有都T
必须继承该方法。
问题内容: 我不明白为什么要编译。我以为它检查了但没有检查? 问题答案: 泛型中的关键字在语义上与常规关键字略有不同。 当使用在泛型的上下文中,例如,这意味着,应该是一个类型的 任一 实现的接口(在情况下,当是接口), 或者 是子类(如果是一个类)。 可能的原因是,如果Generics中支持该关键字,则会使类型参数声明过于冗长。 例如,您将拥有: 相反,此方法的有效语法为: 实际上,您不需要关键字
我正在寻找一个类型安全的,选中的解决方案,以添加一个元素到一个列表,它的泛型需要一个类和一个接口。该示例说明了我想要做的事情--将一个对象添加到一个列表中,该对象的类型扩展了并实现了,其中。 当然,将转换为会解决编译错误,但这将被取消检查。 有什么办法解决这个问题吗?如果没有,有没有人知道编译器不允许这样做的原因?
问题内容: 我正在尝试重构M类型确实扩展了任何内容的类和子类集,即使我们知道它必须是某种类型的子类也是如此。该类型已参数化,我希望其参数化类型可用于已经具有M值的子类。 有什么方法可以定义此类,而不必在参数列表中包括冗余的K和V泛型类型。我希望能够使编译器从子类映射到的M中推断出它们。 换句话说,我希望类声明看起来像这样: 从M的定义可以推断出K和V的类型。 问题答案: 问题在于,它们并没有真正地
假设我想要一个类型变量T,它扩展了某个类并实现了一个接口。类似于: Kotlin中的语法是什么?
会很好?或:
问题内容: 我试图在这样的泛型类中创建一个常规的RuntimeException: 这段代码使我对这个词的错误说法。 这个RuntimeException与我的类通用有什么关系? 问题答案: Java不允许Throwable的通用子类。而且,非静态内部类可以通过其外部类的类型参数有效地进行参数化(请参见Oracle JDK Bug 5086027 )。例如,在您的示例中,内部类的实例具有form类