在java中,一个类可以实现Iterable,它允许你使用foreach()语句和迭代合成糖:
for(T t:ts) ...
Run Code Online (Sandbox Code Playgroud)
但是,这不允许您在迭代器的构造上抛出异常.如果您正在迭代网络,文件,数据库等,那么能够抛出异常会很好.显而易见的候选者是java.io.InputStream,Reader和java.nio.Channel代码,但这些都不能像Iterable接口那样使用Generics.
对于这种情况,是否存在常见的习惯用法或Java API?
澄清:这是在询问是否存在用于从非内存源迭代对象的模式或替代接口.正如响应者所说的那样,不推荐使用RuntimeExceptions来解决问题,也不建议使用我想要的东西.
编辑2:感谢答案到目前为止.共识似乎是"你不能".因此,我可以将问题扩展到"在这种情况下,如果这种情况有用,你会做什么?" 只需编写自己的界面?
我正在使用Apache httpcomponents Java库获取一个网页.连接结果后,我得到的是一个返回an HttpEntity的方法getContent(),InputStream并且还有一个writeTo()写入OutputStream的方法.
我想将结果转换为String以提取信息.最优雅(和安全)的方法是什么?
一些可能的解决方
ByteArrayOutputStream然后使用String构造函数将这些字节转换为String这些都感觉有点难看.你会建议选择其中之一吗?
我正在研究Maven Wagon插件以尝试将一些工件上传到远程UNC服务器共享(\\servername\share\directory\to\put\to),并且我已将其配置为在POM中如此工作:
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<version>1.0-beta-7</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<executions>
<execution>
<id>upload-jar-to-folder</id>
<phase>deploy</phase>
<goals>
<goal>upload</goal>
</goals>
</execution>
</executions>
<configuration>
<fromDir>${project.build.directory}</fromDir>
<includes>*</includes>
<url>file://localhost///${servername}/${sharename}</url>
<toDir>directory/to/put/artifact</toDir>
</configuration>
</plugin>
...
</build>
Run Code Online (Sandbox Code Playgroud)
当我传入时,这适用于一台服务器-Dservername=x -Dsharename=y,但是如何将其扩展,以便我可以为QA或Prod运行部署,我需要部署多台服务器?
我已经考虑(并编写)了一个mvn wagon:upload -Penvironment#多次运行的脚本- 每个服务器一次 - 但这对我来说似乎有瑕疵.如果我正在炮轰一个脚本来处理这个过程,我也可以编写整个部署的脚本.然而,这剥夺了Wagon(和Maven)的实用性......
有没有办法<executions>为一个目标运行多个?例如,wagon:upload在我刚运行时运行多个配置文件配置的任务mvn deploy -Pqa?
site-deploy当我在调用release:perform目标时,我试图让wagon插件在生命周期中上传文件时,我有一个奇怪的问题.似乎wagon在im调用时正确上传文件,mvn site-deploy但它只是响应
无需上传
当调用mvn release:perform哪个应该调用site site-deploy文档中所述的阶段时.
这是旅行车的插件配置.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<executions>
<execution>
<id>upload-jars</id>
<phase>deploy site-deploy</phase>
<goals>
<goal>upload</goal>
</goals>
<configuration>
<fromDir>target/checkout/target</fromDir>
<includes>*.jar</includes>
<url>scpexe://nohost.com</url>
<toDir>/var/www/projects/test</toDir>
<serverId>server - projects</serverId>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
maven告诉我正确的目标已经开始:
[INFO] Executing goals 'deploy site-deploy'...
[INFO] [INFO] Scanning for projects...
Run Code Online (Sandbox Code Playgroud)
但是旅行车没有上传任何东西:
[INFO] [INFO] --- wagon-maven-plugin:1.0-beta-3:upload (default) @ exp4j ---
[INFO] [INFO] Nothing to upload.
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] BUILD SUCCESS
Run Code Online (Sandbox Code Playgroud)
是否有人发现我的问题导致maven在调用site-deploy时按预期工作但在执行时失败release:perform?
我想在Java Swing应用程序中创建一组按钮,就像在绘图程序中的典型工具调色板中一样.也就是说,一组小方形按钮,每个按钮都包含一个图标,其中只有一个被按下,当你按下另一个按钮时,第一个按钮被取消选择.我已经想到了许多解决方案,但它们似乎都不是很容易/优雅.
这听起来像JRadioButton的工作,但如果你添加一个Icon,你仍然会得到一个小圆圈,这是相当低效的空间.我想一个选择是为JRadioButton找到另一种外观和感觉或绘画代码.
另一个替代方案可能是将JButton添加到ButtonGroup,可能将JToggleButton.ToggleButtonModel设置为模型,但是没有所需的效果,因为标准JButton的绘制代码在选择时不会使其保持低调.可能会修改JButton代码来执行此操作.就像让它"按下"一样"选择"它.
第三种选择是使用普通的JButton,并添加一个常用的鼠标监听器,让它们保持按下或不按,并在按钮之间传递变化.
有人可以建议达到目标的最佳途径吗?我错过的一个简单的方法是最好的,但建议这三种选择中的哪一种最好,并指出如何开始也是有用的.
Dart 中是否有对排序列表进行二分搜索的标准库方法?
我用谷歌搜索了一下,似乎在 flutter 中有一个,但在 dart 中找不到。
我还发现了这个错误,其中提到了lowerBound()二分搜索。似乎曾经有一个集合/算法包,但这似乎已被弃用,我在collections.dart.
编写一个并不难,但如果可能的话,我更喜欢使用标准库方法。
beanshell catch(ex)捕获了什么类型的异常:Exception或Throwable?.
例:
try {
.... } catch (ex) { }
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用最新的(4.0.1)Apache http核心组件库.但是,我的网络浏览器通过代理 - 假设它是myproxy.com:9191.有人可以提供一些示例代码来获取一个简单的http获取将其用作代理吗?
我尝试在代码的开头添加以下内容,但没有任何乐趣:
ProxySelector.setDefault(new ProxySelector() {
public List<Proxy> select(URI uri) {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("myproxy.com", 9191);
return Arrays.asList(new Proxy[]{proxy)});
}
public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
ioe.printStackTrace();
}
});
Run Code Online (Sandbox Code Playgroud) 简介:如何使用Maven将一些生成的文件复制到Web服务器(例如IIS或Apache)目录中?
细节:我有一个在Maven中构建的工作应用程序.我已经设法使用webstart-maven-plugin构建它,它在目录中生成所有需要的文件(.jar和.jnlp)target/jnlp.它还会创建一个zip文件target/foo-1.0.zip.
目前webstart插件没有deploy目标 - 对它的请求最终在FAQ(问题3)上.它可能会在将来实施,但目前的建议是使用wagon-maven-plugin.
我从未使用过Wagon.首先,我想将文件复制到由Web服务器提供的本地目录中.后来我想远程复制它们,可能使用ftp.有人可以举例说明我需要添加的内容pom.xml以使本地副本正常工作(希望也是一个ftp示例吗?).我在文档中找不到它.从阅读我想我可能也需要Wagon Maven文件提供程序,但因为这似乎几乎没有文档,我不确定.
我正在尝试lex(然后解析)一个C语言.在C中有预处理器指令,其中换行符很重要,然后是实际代码,它们只是空格.
执行此操作的一种方法是执行像早期C编译器这样的双通过程 - 为#指令设置单独的预处理器,然后将其输出调整为lex.
但是,我想知道是否可以在一个词法分析器中完成它.我很高兴编写scala解析器 - 组合器代码,但我不太确定如何StdLexical处理空格.
有人可以写一些简单的示例代码,这些代码可以说是#include一行(使用换行符)和一些简单的代码(忽略换行符)?或者这是不可能的,最好选择2-pass appproach?