Questions tagged «generics»

泛型是在多种语言中发现的参数多态形式,包括.NET语言,Java,Swift和Rust。

3
具有多个匹配目标类型的lambda表达式的方法签名选择
我正在回答一个问题,遇到了无法解释的情况。考虑以下代码: interface ConsumerOne<T> { void accept(T a); } interface CustomIterable<T> extends Iterable<T> { void forEach(ConsumerOne<? super T> c); //overload } class A { private static CustomIterable<A> iterable; private static List<A> aList; public static void main(String[] args) { iterable.forEach(a -> aList.add(a)); //ambiguous iterable.forEach(aList::add); //ambiguous iterable.forEach((A a) -> aList.add(a)); //OK } } …
11 java  generics  lambda  javac  ecj 

1
为什么在使用不相关的接口类型调用时,编译器为什么选择带有类类型参数的通用方法?
考虑以下两个类和接口: public class Class1 {} public class Class2 {} public interface Interface1 {} 为什么第二个调用mandatory使用Class2,如果getInterface1和Interface1没有关系来调用重载方法Class2? public class Test { public static void main(String[] args) { Class1 class1 = getClass1(); Interface1 interface1 = getInterface1(); mandatory(getClass1()); // prints "T is not class2" mandatory(getInterface1()); // prints "T is class2" mandatory(class1); // prints "T is …

1
Java-8中的方法参考和泛型
我面临方法引用与泛型类型结合使用的问题。 我们有需要调用重载方法的代码,但是由于错误而失败: 无法解析值m1() 我简化了我的问题,以明确问题出在哪里。 以下代码失败: public class Test { void test() { // Getting error here setValue(C1::m1, Integer.ONE); } <E extends I1, T> void setValue(BiConsumer<E, T> cons, T value) { } } interface I1 { } class C1 implements I1 { void m1(Integer value) { } void m1(int value) { …
11 java  generics  lambda  java-8 

4
类型映射时的通用属性问题
我有一个库,可导出类似于以下内容的实用程序类型: type Action<Model extends object> = (data: State<Model>) => State<Model>; 此实用程序类型使您可以声明将作为“动作”执行的功能。它收到一个通用的论据,Model即该操作将针对的论点。 data然后使用导出的另一个实用程序类型键入“ action” 的参数。 type State<Model extends object> = Omit<Model, KeysOfType<Model, Action<any>>>; 该State实用型基本上接受了输入Model通用,然后创建一个新的类型,其中所有的类型的属性Action已被删除。 例如,这是上述的基本用户土地实现; interface MyModel { counter: number; increment: Action<Model>; } const myModel = { counter: 0, increment: (data) => { data.counter; // Exists and typed as `number` data.increment; …

4
C#泛型方法选择
我试图用C#编写可与不同维度的几何实体一起使用的通用算法。 在以下人为设计的示例中,我Point2和和Point3都实现了一个简单的IPoint接口。 现在,我有一个GenericAlgorithm调用函数的函数GetDim。根据类型,此函数有多个定义。还为所有实现的东西定义了一个后备功能IPoint。 我最初希望以下程序的输出为2、3。但是,它的值为0、0。 interface IPoint { public int NumDims { get; } } public struct Point2 : IPoint { public int NumDims => 2; } public struct Point3 : IPoint { public int NumDims => 3; } class Program { static int GetDim<T>(T point) where T: IPoint => 0; …
9 c#  generics 

2
C#不能使`notnull`类型为可空
我正在尝试创建类似于Rust Result或Haskell的类型Either并且我已经了这一点: public struct Result<TResult, TError> where TResult : notnull where TError : notnull { private readonly OneOf<TResult, TError> Value; public Result(TResult result) => Value = result; public Result(TError error) => Value = error; public static implicit operator Result<TResult, TError>(TResult result) => new Result<TResult, TError>(result); public static implicit operator Result<TResult, …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.