我正在将Java转换为C#并具有以下代码(请参阅Java Context中关于其使用的讨论).一种方法可能是创建一个单独的文件/类,但是有一个C#idom保留了Java代码中的意图吗?
public class Foo {
// Foo fields and functions
// ...
private static class SGroup {
private static Map<Integer, SGroup> idMap = new HashMap<Integer, SGroup>();
public SGroup(int id, String type) {
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud) 每个Java Object都有方法wait()和notify()(以及其他变体).我从来没有使用过这些,我怀疑很多其他人都没有.为什么这些如此基本以至于每个对象都必须拥有它们并且在使用它们时是否会有性能损失(可能是某些状态存储在它们中)?
编辑以强调这个问题.如果我有List<Double>100,000个元素,那么每个Double都有这些方法,因为它是扩展的Object.但似乎所有这些都不太可能知道管理它的线程List.
编辑优秀而有用的答案.@Jon有一篇非常好的博文,结合了我的直觉.我也完全赞同@Bob_Cross你应该在担心之前表现出性能问题.(同样作为成功语言的第n定律,如果它是一个性能命中,那么Sun或某人会修复它).
如何使用Java的drawImage()?我没有找到JDK文档.例如,所有drawImage签名都需要一个ImageObserver,但是这个文档对新用户没有多大帮助.
我多年来一直在进行2D和3D操作,包括图形,并且从未使用过四元数,因此我对它们没有感觉.我知道它们可用于某些欧拉角难以操作的操作,也可用于找到最佳拟合一组坐标所需的旋转(X1,X2 ...... XN,X =(xyz))到另一个(X1',X2'...... XN').
是否存在四元数必不可少的地方?是否存在使解决方案更优雅或更高效的地方?
我一直在尝试使用JDK7中的新globbing功能,从文档和示例开始
我可以得到像我这样"glob:*.dat"的人
Files.walkFileTree(startingDir, finder);
Run Code Online (Sandbox Code Playgroud)
例如,但我无法使"**"语法正常工作.我希望能够创建类似的东西:
matcher = FileSystems.getDefault().getPathMatcher("glob:" + "foo/**/bar/*.dat");
Run Code Online (Sandbox Code Playgroud)
并希望得到一个简单的例子.我使用的是Windows 7.
更新:@Oleg和@JBNizet清楚地表明"/"语法与操作系统无关.请注意,Javadocs建议也可以使用依赖于操作系统的语法(需要)
仍有问题:已采取@Nizet并编辑如下:
@Test
public void testStackoverflowGlobber() throws IOException {
final PathMatcher matcher =
FileSystems.getDefault().getPathMatcher("glob:*.cml");
Files.walkFileTree(Paths.get("d:/petermr-workspace/jumbo-converters/jumbo-converters-cli/src/test/resources"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("try>> "+file);
if (matcher.matches(file)) {
System.out.println("MATCHES>>"+file);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
}
Run Code Online (Sandbox Code Playgroud)
这给出了如下输出:
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdx
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cml
try>> …Run Code Online (Sandbox Code Playgroud) 我在工具A中显示了编码A的文档A,在工具B中显示了编码B的文档B.如果我将B(部分)B剪切并粘贴到A中可能是什么结果字符编码?我意识到这取决于工具A和工具B以及粘贴缓冲区中保存的信息(可能包含编码?)和操作系统.
高质量的工具应该做什么?并且在实践中有多少常用工具(例如Word,TextPad,各种IDE等)做得很好?
我最近遇到了一段带有WeakReferences的Java代码 - 我从未见过它们已部署,尽管我们在介绍时遇到过它们.这是应该常规使用的东西还是只有在遇到内存问题时?如果是后者,它们是否可以轻松改装或代码是否需要严格的重构?普通的Java(或C#)程序员通常会忽略它们吗?
编辑过度使用WR可以造成任何损害吗?
我继承了代码
import org.apache.http.client.HttpClient;
...
HttpClient httpclient = createHttpClientOrProxy();
...
private HttpClient createHttpClientOrProxy() {
HttpClient httpclient = new DefaultHttpClient();
/*
* Set an HTTP proxy if it is specified in system properties.
*
* http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html
* http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientExecuteProxy.java
*/
if( isSet(System.getProperty("http.proxyHost")) ) {
int port = 80;
if( isSet(System.getProperty("http.proxyPort")) ) {
port = Integer.parseInt(System.getProperty("http.proxyPort"));
}
HttpHost proxy = new HttpHost(System.getProperty("http.proxyHost"), port, "http");
// @Deprecated methods here... getParams() and ConnRoutePNames
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
}
return httpclient;
}
Run Code Online (Sandbox Code Playgroud)
httpClient.getParams() 是@Deprecated并读"
HttpParams getParams()
Deprecated.
(4.3) use …Run Code Online (Sandbox Code Playgroud) 我手动将代码从Java转换为C#并与(我称之为)原始类型进行斗争(参见,例如,自动装箱和拆箱在Java和C#中表现不同).从答案我明白double(C#)和Double(C#)是等价的,double(C#)也可以用在容器中,例如作为字典中的键.但是,double(Java)不能在像HashMap这样的容器中使用,因为它是自动装箱Double(Java)的原因.
double(C#)一个原始或对象?double(Java)不同?double除非它被创建,否则不能将(C#)设置为null nullable.
double?(C#)相当于Double(Java)的?它们都被称为物体吗?(在这个讨论中,"第一类对象"一词的用法是否有用?)
我在Eclipse调试透视图中丢失了"调试"面板/工具栏(带有黄色卷曲箭头步骤工具),但无法将其恢复.
单击窗口| 显示视图| 调试(甲虫)似乎什么都不做.
如何取回或恢复默认设置(不更改其他内容)?