Tag: generics

PowerMockito – 如何使用带有类型列表的whenNew()?

我希望PowerMockito在调用new ArrayList()时返回我的空数组Foo ,但我不知道如何构造语句。 具体来说,我希望new ArrayList()正常创建一个新列表。 ArrayList fooList = new ArrayList(); PowerMockito.whenNew(ArrayList.class).withParameterTypes(Foo.class).thenReturn(fooList); ^这里基本上是我的,但.withParameterTypes(Foo.class)不允许我跟随.thenReturn() 。 我唯一的选择是withArguments(firstArgument, additionalArguments) 。 这可能与PowerMock有关,如果是这样,我该如何构建它? 编辑: 好吧,潜在的问题是我需要得到我正在尝试测试的方法的结果,但我不得不模拟请求,并且列表被放置在我正在尝试测试的方法结束时的请求中。 inspectionAction.viewInspectionDetailsAjax(mapping, form, request, response); 这个方法从请求中提取了几个参数,这些参数被Mockito.mock(HttpServletRequest.class); )。 通常在我们的应用程序中,我们将数据放在会话级变量上。 但是,由于此方法一次被调用多次并且结果ajax进入页面,因此每条数据都存储在请求中: request.setAttribute(“inspectionAjaxDetails”, details); 所以当模拟request时,我需要一些方法来获取details ,这是一个类型化的ArrayList。

如何返回作为参数给出的相同Collection类型,但具有不同的元素类型?

我想做这个: public <C extends Collection> C strings_to_files(C strings) { C files = new C(); for(String string : strings) { files.add(new File(string) } return files; } 我只是希望它采取任何字符串集合,并返回与文件相同的集合类型。 有没有办法做到这一点? 或者我可能只是语法错误…

编译错误与generics

test1和test2之间的区别在哪里? 为什么test1中的编译错误? import java.util.ArrayList; import java.util.Collection; class MyType { } class MyClass { private Collection myTypes = new ArrayList(); private Collection myTs = new ArrayList(); public Collection getMyTypes() { return myTypes; } public Collection getMyTs() { return myTs; } } public class TestSimple { public void test1() { MyClass myClass = new MyClass(); for (MyType […]

普通类型的Spring问题

使用generics时,我遇到Spring问题。 以下代码描述了这个问题: public class TestInj { S elem; public S getElem() { return elem; } public void setElem(S elem) { this.elem = elem; } } @Component public class First extends TestInj { public First() { setElem(“abc”); } } @Component public class Second extends TestInj { public Second() { setElem(2); } } public class BaseTest { […]

Java中的通用构建器

我为查找表创建了一个构建器并使用它,如下所示。 public class RaceCodeDataBuilder { private RaceCode raceCode; public RaceCodeDataBuilder() { raceCode = new RaceCode(); } public RaceCodeDataBuilder code(String code) { raceCode.setCode(code); return this; } public RaceCodeDataBuilder displayName(String displayName) { raceCode.setDisplayName(displayName); return this; } public RaceCode build() { return raceCode; } } 在测试中使用此构建器: RaceCode mockRaceCode = new RaceCodeDataBuilder() .code(“2054-5”) .displayName(“Black or African American”) .build(); 我期待更多类似的构建器用于其他查找表,例如StateCodeBuilder,GenderCodeBuilder,并且它们都只有“code”和“displayName”,类似于上面的构建器。 […]

通用堆栈数组

我必须实现一个通用堆栈,但是当我尝试构建项目时,我遇到了一个我无法弄清楚的错误。 这是代码: Stack.java – >接口 package stack; public interface Stack { public boolean isEmpty(); public boolean isFull(); public void push(T x) throws StackFullException; public boolean offer(T x); public T pop() throws StackEmptyException; public T poll(); public T peek() throws StackEmptyException; public T element(); } StackArray.java – >接口的实现 package stack; public class StackArray implements Stack { […]

generics:确保参数类型相同

我有以下方法: protected void setValue(final S oldValue, final S newValue) { // Do something } 我想确保两个参数属于同一类型。 如果在尝试传递两种不同类型的参数时出现编译器错误,那将会很酷。 上述方式显然不正确。 我可以放入一个String和一个Integer ,因为它们都是从Object扩展而来的。 我的想要甚至可能吗? 或者是唯一的方法来确保两个参数都是相同的类型,以检查方法内部并抛出IllegalArgumentException ?

Java:如何编写接受实现给定接口的Enum常量的generics函数?

所以我有一堆枚举,它们都扩展了一个接口: public interface MyInterface {} 然后我有几个扩展界面的枚举: public enum A implements MyInterface {} public enum B implements MyInterface {} 我想要一个只接受扩展此接口的枚举的函数。 我不能做: public void MyFunction(MyInterface input) 因为,在函数内部,我使用EnumSet.of(输入)创建一个EnumSet。 我做了 public <T extends Enum> void myFunction(T input) 因为,在函数内部,我需要创建一个需要传递给另一个函数的Map。 那么有没有任何类型安全的方法来做这个没有铸造? 编辑:更正的接口定义。

使用Java通配符

我想在Java中实现某种组件系统。 有一个名为Form的界面 interface Form { T getObject(); // … } 我想提供一些名为CompoundForm的抽象类来帮助从简单forms构建复杂的表单。 CompoundForm的用户需要使用Component接口提供每个组件的一些描述 interface Component { /** Factory method to build new form for given component */ Form createForm(U u, String prefix); /** Extract component of type U from the compound t */ U get(T t); /** Mutate t or build new compound of type T […]

java中的通用超类

是否有可能在java中创建这样的东西 public abstract class GenericView extends LAYOUTTYPE 以便 public class MyView extends GenericView 扩展GenericView和HorizontalLayout和 public class MyView2 extends GenericView 扩展GenericView和VerticalLayout ?