Tag: generics

generics和类<? 扩展Enum >,EnumSet.allOf(class)vs class.getEnumConstants()

我有以下BeanValidation代码可以正常工作,并允许validation带有注释的bean: @EnumValue(enumClass = MyTestEnum.class) private String field; public enum MyTestEnum { VAL1, VAL2; } 仅当字段值为“VAL1”或“VAL2”时才会进行validation。 public class EnumNameValidator implements ConstraintValidator { private Set AVAILABLE_ENUM_NAMES; @Override public void initialize(EnumValue enumValue) { Class<? extends Enum> enumSelected = enumValue.enumClass(); Set<? extends Enum> enumInstances = Sets.newHashSet(enumSelected.getEnumConstants()); AVAILABLE_ENUM_NAMES = FluentIterable .from(enumInstances) .transform(PrimitiveGuavaFunctions.ENUM_TO_NAME) .toImmutableSet(); } @Override public boolean isValid(String value, ConstraintValidatorContext […]

我可以在Java中的generics类型上调用.class吗?

我想知道Java中是否有办法做类似的事情 Class c = List.class; Class c2 = List.class; 我需要这样的东西来创建一个存储类名(带有generics类型)的地图和我以后可以查找的相应对象。 例如, Map dataMap = new HashMap(); dataMap.put(c, listOfStrings); dataMap.put(c2, listOfDates); 由于运行期间的类型擦除,这是不可能的吗?

Javagenerics错误:命令行编译器中的不可转换类型

我有一些使用generics的Guice绑定代码,它可以从Eclipse的编译器编译和编译,但不能从Java(命令行)编译器编译。 我升级到最新的(1.7.0_01)Java SDK但仍然收到以下错误。 [error] …\BindCategorySelectorActivity.java:42: error: inconvertible types [error] (Class<? extends ListAdapterDataProvider<Row>>) CategoryDataProvider.class); [error] ^ [error] required: Class<? extends ListAdapterDataProvider<Row>> [error] found: Class [error] 1 error [error] {file:/…/compile:compile: javac returned nonzero exit code 相关代码: public interface Category extends DatabaseItem {} public class CategoryDataProvider implements ListAdapterDataProvider<Row> {} public class BindListViewHandlerWithSpecificProvider extends AbstractModule { public BindListViewHandlerWithSpecificProvider( Class<? […]

Javaforms类型参数定义(generics)

我想定义一个generics类型,其实际类型参数只能是 一个数字原始包装类( Long , Integer , Float , Double ) String 我可以通过这样的定义满足第一个要求 public final class MyClass { // Implementation omitted } 但我无法弄清楚如何满足他们两个。 我怀疑这实际上是不可能的,因为AFAIK在定义forms类型参数时没有办法指定“或”语义,尽管你可以使用如下的定义来指定“和”语义 public final class MyClass { // Implementation omitted } 干杯,唐

如何构造ConstraintViolationException?

我对javax.validation API感到困惑。 我正在写一个简单的测试来理解它: Sample sample = new Sample(); Set<ConstraintViolation> violations = validator.validate(sample); if (!violations.isEmpty()) { // Eclipse refuses to let me use my violations variable throw new ConstraintViolationException(violations); } 我应该如何声明违规集,以便在exception构造函数中使用它?

关于Java中的通用数组创建

刚发现一行我不太了解的代码。 List[] stringLists = new List[1]; 这行可以在我的AndroidStudio IDE上通过编译,但有警告。 它似乎违反了面向对象语言的基本规则:“超类对象可以用子类实例实例化,但反之亦然。” String[] ss = new Object[1]; // won’t compile 我们知道List是任何通用List类型的超类型,例如在这种情况下为List 。 并且由于数组是协变的,所以我认为List []类型是List[]类型的超类。 为什么List[]可以用List[]实例化?

scala中的协变类型参数需要在java接口中保持不变

我有一个看起来像这样的特征(我可以在这个相关问题上找到一些更多的信息,虽然我不认为,这个问题需要它) trait Extractor[-A,+B] { def extract(d:A):B //lots of other things } 要在现有的java框架中使用它,我希望这个Extractor有一个返回Comparator[B] (是java.util.Comparator )的函数,或者甚至更好地扩展Comparator[A] 。 现在这会产生问题,因为Comparator的类型参数应该是不变的,而A是逆变的, B是协变的。 所以我得到这样的错误: scala> import java.util.Comparator import java.util.Comparator scala> trait Extractor[-A,+B] extends Comparator[A] :6: error: contravariant type A occurs in invariant position in type [-A,+B]java.lang.Object with java.util.Comparator[A] of trait Extractor trait Extractor[-A,+B] extends Comparator[A] ^ scala> trait Extractor[-A, +B] { […]

Java中对类的双重generics约束:扩展了ConcreteClass和I.

有没有办法在Java中定义一个类似于以下C#genericsconstratint的generics约束? class Class1 where I : Interface1, Class2 : I 我试着这样做: class Class1 但编译器抱怨“Class2”部分:Type参数不能跟随其他边界。

下限有界通配符未针对上限有效类型参数进行检查

我想知道为什么这段代码编译成功? 源代码: abstract class A { public abstract A useMe(A k); } 编译成功 它是如何工作的以及为什么编译? M是任何类型,为什么它可以使用? 应该是: ? 这不会编译: abstract class A { public abstract A useMe(A k); } 错误信息: 类型参数M不在类型变量K的范围内,其中M,K是类型变量:M扩展方法useMe中声明的对象(A)K扩展在类A中声明的数字 有什么不同?

Collections.max签名的说明

当我偶然发现这个方法签名时,我正在阅读一篇关于Java Generics的文章: static <T extends Object & Comparable> T max(Collection coll); 我没有得到的部分是我们需要的原因 Collection coll 不会 Collection coll 做得好吗? 有人可以解释为什么下面的签名不合适吗? static <T extends Object & Comparable> T max(Collection coll); 提前感谢您的回复。 这让我困惑了很长一段时间..