Tag: 参数化

Apache Avro框架可以在序列化期间处理参数化类型吗?

Apache Avro可以在序列化期间处理参数化类型吗? 当我尝试序列化使用generics的实例时,我看到从Avro框架抛出此exception – org.apache.avro.AvroTypeException: Unknown type: T at org.apache.avro.specific.SpecificData.createSchema(SpecificData.java:255) at org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:514) at org.apache.avro.reflect.ReflectData.createFieldSchema(ReflectData.java:593) at org.apache.avro.reflect.ReflectData$AllowNull.createFieldSchema(ReflectData.java:75) at org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:472) at org.apache.avro.specific.SpecificData.getSchema(SpecificData.java:189) 我尝试序列化的类看起来像这样 public class Property { private T propertyValue; } 我正在尝试根据传入的POJO实例动态生成架构。 我的序列化代码如下所示 – ByteArrayOutputStream os = new ByteArrayOutputStream(); ReflectData reflectData = ReflectData.AllowNull.get(); Schema schema = reflectData.getSchema(propertyValue.getClass()); DatumWriter writer = new ReflectDatumWriter(schema); Encoder encoder = EncoderFactory.get().jsonEncoder(schema, os); […]

将数组传递给Parameterized JUnit

我是JUnit 4.x的参数化function的新手并且遇到了问题。 我的参数化测试由3个整数数组组成,我很难如何声明它们。 我下面的内容会产生运行时错误: testGeneral[0] caused an ERROR: argument type mismatch argument type mismatch java.lang.IllegalArgumentException at java.lang.reflect.Constructor.newInstance(Constructor.java:526) testGeneral[1] caused an ERROR: argument type mismatch argument type mismatch java.lang.IllegalArgumentException at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 这是我的代码: @RunWith(Parameterized.class) public class MyArrayTest { private Integer[] inputList1; private Integer[] inputList2; private Integer[] expectedList; public MyArrayTest(Integer[] li1, Integer[] li2, Integer[] expected) { // ========> […]

generics类类型中的参数化方法

我有一个相当简单的问题。 我找不到答案。 这两个代码片段有区别吗? 有什么区别? 片段1: public class BinaryTree<T extends Comparable> { … public void add(E value) { … } public void add(E value, Node node) { … } … } Fragment2: public class BinaryTree<T extends Comparable> { … public void add(T value) { … } public void add(T value, Node node) { … } … […]

JComboBox是一种原始类型。 应参数化对generics类型JComboBox 的引用

String[] boxOptions = {“1″,”2″,”4″,”8″,”16″,”20″,”40″,”100″,”400”}; JComboBox box = new JComboBox(boxOptions); 我以前在程序中有这些确切的代码行,并没有收到此错误。 我做了一些搜索,我发现的结果有点过头了。 有任何想法吗? 错误是: JComboBox is a raw type. References to generic type JComboBox should be parameterized

当使用JUnit的@Parameterized时,我可以让一些测试仍然只运行一次

在许多情况下,我使用@Parameterized对许多排列运行测试。 这非常有效并且使测试代码本身变得简单和干净。 但是有时候我想让一些测试方法只运行一次,因为它们没有使用参数,JUnit是否有办法将测试方法标记为“singleton”或“run-once”? 注意:这不涉及在Eclipse中运行单个测试,我知道如何做到:)

获得通用类

我的class级开始 public abstract class LastActionHero(){ 现在代码中的某个地方我想编写H.class但是这是不可能的(比如String.class或Integer.class )。 你能告诉我如何获得通用的Class吗?

使用reflection在Java中创建通用参数化类

如何使用reflection在Java中创建通用参数化类? 我有 public class SomeClass { public SomeClass() { } } 我需要一个它的实例。 我尝试过变种 Class c = Class.forName(“SomeClass”); 但是找不到允许我获得适当类型实例的语法,比如说 SomeType instance = (SomeType)Class.forName(“SomeClass”).createInstance(); 那么,我怎么能这样做呢?

返回带generics的对象子类

使用抽象类,我想定义一个为子类返回“this”的方法: public abstract class Foo { … public T eat(String eatCake) { … return this; } } public class CakeEater extends Foo {} 我希望能够做到这样的事情: CakeEater phil = new CakeEater(); phil.eat(“wacky cake”).eat(“chocolate cake”).eat(“banana bread”); 可以说香蕉面包会抛出IllegalArgumentException,并显示消息“Not a cake!”

Java map,key = class,value =该类的实例

我不确定我想做什么是可能的,但如果是的话,我想知道如何做。 基本上,我想创建一个Map,其中键是一个类( java.lang.Class ),该条目的值是该类的一个实例。 目前我有 private Map<Class, Object> myMap = new HashMap<Class, Object>(); 但是,这意味着任何Object都可以放在Map中。 如果可能的话,我想制作它,因此只有键中类的一个实例可以放在地图中。 有没有办法使用? 对Class进行参数化以确保这一点? 此外,我发现在做这样的事情时可能会有内存泄漏 。 我不确定我是否完全理解这是怎么发生的。 我只会将单个对象粘贴到地图中,那么是否仍会出现内存泄漏问题? 如果是这样,我该如何预防呢?