更新:正如@PaulGroke在下面指出的那样,Java 7已经发生了变化:现在有了AutoCloseable.这与新的try-with-resources构造没有关联并且受流支持.
AutoCloseable是.NET IDisposable接口的直接Java等价物.
CloseableJava 1.5中引入的接口与流紧密相关,甚至还有一个异常说明符IOException.这表明它应该仅用于流或其他IO相关活动,而不是通用清理逻辑.
当然,该close()方法的描述在流/ IO上下文之外完全没有意义:
void close() throws IOException关闭此流并释放与其关联的所有系统资源.
因此,我应该使用它上面Disposable的Dispose()方法声明我自己的接口,并将其用作.NET IDisposable接口的模拟吗?或者我应该重复使用,Closeable即使它可能不是一个完美的合适?
我们有一个占位符egg,它不包含任何代码,只是为了从PyPi存储库中提取依赖包列表而存在.
这些依赖包大多数是与平台无关的,但有些只在Win32平台上使用.
是否有可能以某种方式使依赖平台有条件,以便我的install_requires列表中的给定依赖项只会在Win32上安装时被拉下来?
或者:是否可以指定可选依赖项列表,如果可用,将安装,但如果不是,则不会导致easy_install失败?
假设我有一个InputStream包含文本数据,我想将其转换为String(例如,所以我可以将流的内容写入日志文件).
采取InputStream并将其转换为最简单的方法是String什么?
public String convertStreamToString(InputStream is) {
// ???
}
Run Code Online (Sandbox Code Playgroud) ReSharper重新格式化代码功能非常方便灵活,特别是JetBrains在3.0版中添加的新代码布局模板灵活性.
是否有一套标准的ReSharper代码样式设置与Microsoft StyleCop强制执行的规则相匹配,因此StyleCop合规性可以像运行ReSharper"重新格式化代码"功能一样简单吗?
有没有办法确定serialVersionUID序列化Java对象的生成?
问题是我序列化了一个对象而没有明确指定serialVersionUID.现在反序列化过程抱怨类不兼容.但是我并没有以一种使它不兼容的方式改变这个类.所以我假设serialVersionUID在类中指定它就足够了,因为它存储在对象数据中.为了做到这一点,我需要serialVersionUID从序列化数据中读取.
.NET 4中引入的一个有用的便利是Stream.CopyTo(Stream [,Int32]),它从当前流中读取内容并将其写入另一个流.
这样可以避免需要稍微繁琐的代码,例如:
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[32768];
while (true)
{
int read = input.Read (buffer, 0, buffer.Length);
if (read <= 0)
return;
output.Write (buffer, 0, read);
}
}
Run Code Online (Sandbox Code Playgroud)
由于我没有在这台机器上安装.NET 4,我想知道是否安装了.NET 4的人可以打开Reflector并向我们展示Framework Class Library团队如何为.NET 4实现此方法.
将它们的实现与上面的代码片段进行比较和对比.特别是,我很想知道选择了什么默认缓冲区大小.
为什么下面的Windows批处理文件输出Foofollowedby Bar,而不是Baz?
@echo off
setlocal
set _=Foo
echo %_%
set _=Bar
if 1==1 (
set _=Baz
echo %_%
)
Run Code Online (Sandbox Code Playgroud)
我的系统上的输出(Microsoft Windows XP [版本5.1.2600])是:
Foo
Bar
Run Code Online (Sandbox Code Playgroud)
如果我删除条件语句,则会观察到Foo和的预期输出Baz.
给定一个字符串列表,将这些字符串连接成逗号分隔列表的最佳方法是什么,最后没有逗号.(VB.NET或C#)(使用StringBuilder或String Concat.)
Dim strResult As String = ""
Dim lstItems As New List(Of String)
lstItems.Add("Hello")
lstItems.Add("World")
For Each strItem As String In lstItems
If strResult.Length > 0 Then
strResult = strResult & ", "
End If
strResult = strResult & strItem
Next
MessageBox.Show(strResult)
Run Code Online (Sandbox Code Playgroud) Reactive Extensions(适用于.NET或JavaScript)的杀手级优势是什么?开发人员为什么要学习和使用它们?
请考虑以下简化的接口继承层次结构:
// Starting point:
public interface Base {
void Foo();
}
public interface Derived extends Base {
}
Run Code Online (Sandbox Code Playgroud)
它旨在将Foo方法从Base接口移动到Derived接口:
// Desired end-point:
public interface Base {
}
public interface Derived extends Base {
void Foo();
}
Run Code Online (Sandbox Code Playgroud)
为了逐步实现这种突破性改变,希望在Base一段时间内保持接口的向后兼容性.
这可以通过将Base接口上的方法标记为@Deprecated:
// Intermediate state:
public interface Base {
/**
* @deprecated This method is deprecated as of release X. Derived.Foo should be used instead.
*/
@Deprecated void Foo();
}
public interface …Run Code Online (Sandbox Code Playgroud) java ×4
.net ×3
.net-4.0 ×1
batch-file ×1
c# ×1
deprecated ×1
distutils ×1
idisposable ×1
inputstream ×1
interface ×1
javascript ×1
overriding ×1
python ×1
resharper ×1
setuptools ×1
stream ×1
string ×1
stylecop ×1
vb.net ×1