public interface I {
}
public class A : I {
}
Run Code Online (Sandbox Code Playgroud)
编译器显式IEnumerable<A>为IEnumerable<I>:
public void Test() {
IEnumerable<A> a = new List<A>();
new List<I>().AddRange(a);
}
Run Code Online (Sandbox Code Playgroud)
但是通过通用约束,我们得到:
public void Test<T>() where T : I {
IEnumerable<T> t = new List<T>();
new List<I>().AddRange(t);
}
^^^
Argument 1: cannot convert from 'IEnumerable<T>' to 'IEnumerable<I>'
Run Code Online (Sandbox Code Playgroud)
但是,编译很好.
public void Test<T>(T t) where T : I {
new List<I>().Add(t);
}
Run Code Online (Sandbox Code Playgroud)
因此问题是:这是一个正确的行为,还是一个错误?
我正在开发一个快速应用程序,其中我有一个方法应该将@ 2x图像重新缩放为常规图像.问题是它没有:(
为什么?
-(BOOL)createNormalImage:(NSString*)inputRetinaImagePath {
NSImage *inputRetinaImage = [[NSImage alloc] initWithContentsOfFile:inputRetinaImagePath];
NSSize size = NSZeroSize;
size.width = inputRetinaImage.size.width*0.5;
size.height = inputRetinaImage.size.height*0.5;
[inputRetinaImage setSize:size];
NSLog(@"%f",inputRetinaImage.size.height);
NSBitmapImageRep *imgRep = [[inputRetinaImage representations] objectAtIndex: 0];
NSData *data = [imgRep representationUsingType: NSPNGFileType properties: nil];
NSString *outputFilePath = [[inputRetinaImagePath substringToIndex:inputRetinaImagePath.length - 7] stringByAppendingString:@".png"];
NSLog([@"Normal version file path: " stringByAppendingString:outputFilePath]);
[data writeToFile:outputFilePath atomically: NO];
return true;
}
Run Code Online (Sandbox Code Playgroud) 我有colorA [UIColor blueColor],和colorB,它是[UIColor redColor].这有可能让我呈现一个[UIColor purple]?如何实施?谢谢.
当我看到宣言时 ArrayList
class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)
List即使ArrayList超类AbstractList实现相同的List接口,它也会实现接口.
abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
Run Code Online (Sandbox Code Playgroud)
类似的声明上可以找到HashMap,LinkedHashMap也声明.
在声明中LinkedHashMap,它Map仅实现接口,而不是其超类实现的其他接口HashMap.
因此,拥有此类声明可能会带来一些好处.
如果我给两种颜色
UIColor *color1 = [UIColor blackColor];
UIColor *color2 = [UIColor whiteColor];
Run Code Online (Sandbox Code Playgroud)
我应该得到grayColor,我该如何实现呢?
我是MongoDB及其Java ... SDK的新手?API?我有一个非常简单的问题,但我找不到满意的答案.
假设我有一组实例,如:
{
"_id": {
"$oid": "5156171e5d451c136236e738"
},
"_types": [
"Sample"
],
"last_z": {
"$date": "2012-12-30T09:12:12.250Z"
},
"last": {
"$date": "2012-12-30T04:12:12.250Z"
},
"section": "5156171e5d451c136236e70f",
"s_mac": "AA:AA:AA:AA:AA:AA",
"_cls": "Sample",
}
Run Code Online (Sandbox Code Playgroud)
我有一个硬编码的Java列表:
static List<String> MAC_LIST = Arrays.asList("90:27:E4:0E:3D:D2", "A8:26:D9:E6:1D:8B");
Run Code Online (Sandbox Code Playgroud)
我想知道的是如何查询MongoDB,以便它将为我提供其s_mac字段具有MAC_LIST列表中显示值的所有对象.
我猜我应该使用$ in运算符,但我不知道如何将它转换为Java代码.
任何提示或链接到页面,$in通过Java SDK 解释运算符的使用将不胜感激!
在使用Cocoa的Objective-C中,通过使用键值编程(KVP),可以在没有显式循环的情况下完成许多任务.例如,我可以使用一行代码找到数组中的最大数字:
NSNumber * max = [numbers valueForKeyPath:@"@max.intValue"];
Run Code Online (Sandbox Code Playgroud)
我如何用swift做同样的事情?数组似乎不支持valueForKeyPath方法.
阅读Java SE规范中的参考类型转换时:
给定编译时引用类型S(源)和编译时引用类型T(目标),如果由于以下规则而没有发生编译时错误,则从S到T存在转换转换.
我一直在寻找以下条件:
如果S是类类型:如果T是类类型,则为
|S| <: |T|或者|T| <: |S|.否则,发生编译时错误.此外,如果存在T的超类型X和S的超类型Y,使得X和Y都可证明是不同的参数化类型(§4.5),并且X和Y的擦除是相同的,则编译时发生错误.
谁能举个例子说明这种情况?
编辑:
我试图将这个Java代码转换为swift 2.0
long checksumValue = 4253726258L;
int liCrc32 = (int)checksumValue;
System.out.println("liCrc32" + liCrc32)
Run Code Online (Sandbox Code Playgroud)
LiCrc32等于-41241038
我的版本很快
let int64: Int64 = 4253726258
let a:Int = Int(int64)
Run Code Online (Sandbox Code Playgroud)
a返回我4253726258
我不明白为什么在Java中价值是负面的?