标签: generics

Scala:抽象类型与泛型

我正在阅读斯卡拉之旅:抽象类型.什么时候使用抽象类型更好?

例如,

abstract class Buffer {
  type T
  val element: T
}
Run Code Online (Sandbox Code Playgroud)

而是那些泛型,例如,

abstract class Buffer[T] {
  val element: T
}
Run Code Online (Sandbox Code Playgroud)

generics scala abstract-type

243
推荐指数
3
解决办法
3万
查看次数

Java泛型的'?','E'和'T'有什么区别?

我遇到像这样的Java代码:

public interface Foo<E> {}

public interface Bar<T> {}

public interface Zar<?> {}
Run Code Online (Sandbox Code Playgroud)

上述所有这三者之间有什么区别,他们在Java中称这种类或接口声明是什么?

java generics

241
推荐指数
5
解决办法
14万
查看次数

如何在Java中使用Class <T>?

有一个很好的讨论泛型和他们在这个问题的幕后真正做了什么,所以我们都知道这Vector<int[]>是一个整数数组的向量,并且HashTable<String, Person>是一个表,其键是字符串和值Persons.然而,困扰我的是使用Class<>.

java类Class也应该采用模板名称,(或者我在eclipse中通过黄色下划线告诉我).我不明白我应该放在那里.Class对象的整个要点是当您没有完全拥有关于对象,反射等的信息时.为什么它让我指定Class对象将保持哪个类?我显然不知道,或者我不会使用该Class对象,我会使用具体的一个.

java generics templates class

237
推荐指数
7
解决办法
48万
查看次数

具有多个约束的通用方法

我有一个泛型方法,它有两个通用参数.我试图编译下面的代码,但它不起作用.它是.NET限制吗?是否可以为不同的参数设置多个约束?

public TResponse Call<TResponse, TRequest>(TRequest request)
  where TRequest : MyClass, TResponse : MyOtherClass
Run Code Online (Sandbox Code Playgroud)

c# generics .net-3.5

235
推荐指数
4
解决办法
8万
查看次数

Java泛型类型擦除:何时以及发生了什么?

在Oracle的网站上读到了Java的类型擦除.

什么时候发生类型擦除?在编译时还是运行时?当班级加载?当类被实例化时?

很多站点(包括上面提到的官方教程)都说在编译时会发生类型擦除.如果在编译时完全删除了类型信息,那么当调用使用泛型的方法而没有类型信息或错误的类型信息时,JDK如何检查类型兼容性?

考虑以下示例:Say class A有一个方法,empty(Box<? extends Number> b).我们编译A.java并获取类文件A.class.

public class A {
    public static void empty(Box<? extends Number> b) {}
}
Run Code Online (Sandbox Code Playgroud)
public class Box<T> {}
Run Code Online (Sandbox Code Playgroud)

现在我们创建另一个类B,该类empty使用非参数化参数(原始类型)调用该方法:empty(new Box()).如果我们编译B.javaA.class在类路径中,javac的是足够聪明,引发警告.所以A.class 一些类型信息存储在其中.

public class B {
    public static void invoke() {
        // java: unchecked method invocation:
        //  method empty in class A is applied to given types
        //  required: Box<? extends java.lang.Number>
        //  found: …
Run Code Online (Sandbox Code Playgroud)

java generics type-erasure

233
推荐指数
6
解决办法
8万
查看次数

如何将超类型列表转换为子类型列表?

例如,假设您有两个类:

public class TestA {}
public class TestB extends TestA{}
Run Code Online (Sandbox Code Playgroud)

我有一个返回a的方法,List<TestA>我想将该列表中的所有对象强制转换为TestB最终得到一个List<TestB>.

java generics collections casting list

231
推荐指数
10
解决办法
23万
查看次数

通用字典的不区分大小写的访问

我有一个使用托管dll的应用程序.其中一个dll返回一个通用字典:

Dictionary<string, int> MyDictionary;  
Run Code Online (Sandbox Code Playgroud)

字典包含大小写的键.

另一方面,我得到一个潜在的密钥列表(字符串),但我不能保证这种情况.我试图使用键获取字典中的值.但是,由于案件不匹配,以下情况当然会失败:

bool Success = MyDictionary.TryGetValue( MyIndex, out TheValue );  
Run Code Online (Sandbox Code Playgroud)

我希望TryGetValue会有一个像MSDN文档中提到的忽略大小写标志,但它似乎对通用词典无效.

有没有办法让字典的值忽略关键案例?有没有比使用正确的StringComparer.OrdinalIgnoreCase参数创建字典的新副本更好的解决方法?

c# generics dictionary

225
推荐指数
4
解决办法
9万
查看次数

为什么Java Generics不支持原始类型?

为什么Java中的泛型使用类而不是基本类型?

例如,这工作正常:

List<Integer> foo = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

但这是不允许的:

List<int> bar = new ArrayList<int>();
Run Code Online (Sandbox Code Playgroud)

java generics primitive

222
推荐指数
5
解决办法
7万
查看次数

通用类型转换FROM字符串

我有一个类,我想用它来存储另一个类的"属性".这些属性只有名称和值.理想情况下,我想要的是能够添加类型属性,以便返回的"值"始终是我想要的类型.

类型应该始终是原始的.此类是一个抽象类的子类,它基本上将名称和值存储为字符串.这个想法是这个子类将为基类添加一些类型安全性(以及节省我的一些转换).

所以,我创建了一个类(大致)这个:

public class TypedProperty<DataType> : Property
{
    public DataType TypedValue
    {
        get { // Having problems here! }
        set { base.Value = value.ToString();}
    }
}
Run Code Online (Sandbox Code Playgroud)

所以问题是:

是否有一种"通用"方式从字符串转换回原语?

我似乎找不到任何通用的界面来连接整个转换(像ITryParsable这样理想!).

c# generics primitive type-safety

221
推荐指数
5
解决办法
12万
查看次数

如何将参数传递给Activator.CreateInstance <T>()

我想创建一个我在一个通用方法中指定的类型的实例.此类型具有许多重载的构造函数.我希望能够将参数传递给构造函数,但是

Activator.CreateInstance<T>()
Run Code Online (Sandbox Code Playgroud)

并不认为这是一个选择.

还有另一种方法吗?

c# generics createinstance

216
推荐指数
4
解决办法
13万
查看次数