我有一个控制台应用程序,在执行其任务后,必须向用户提供反馈,例如"操作已完成"或"操作失败"以及详细错误.
问题是,如果我只是"让它运行",输出消息将被打印,但控制台将很快关闭,没有时间阅读消息.
据我所知,在C++中,每个控制台应用程序都将以"按任意键退出"或类似的结尾.在C#中我可以用a来模拟这种行为
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
但是我怎么能用Java做呢?我正在使用Scanner类,但鉴于"输入"是我的Scanner实例:
input.next()
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
"任何关键"都可以使用,除了返回,这在这里是非常重要的.有什么指针吗?
这是一个非常基本的问题,但我以前从未研究过仿制药,我发现自己需要使用它.不幸的是,我现在没时间通过任何教程,到目前为止我找到的相关问题的答案并不是人们可以称之为基本的,所以我们去:
假设我有以下内容:
List<MyClass1> list1 = getListType1();
List<MyClass2> list2 = getListType2();
if (someCondition)
MyMethod(list1);
else
MyMethod(list2);
Run Code Online (Sandbox Code Playgroud)
而且当然
void MyMethod(List<T> list){
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
好吧,我认为这很简单,但显然不是.VS警告我
无法从用法推断出方法MyMethod(System.Collections.Generic.List)的类型参数
无论如何,如果我编译它,我会得到一个
找不到类型或命名空间名称"T"
错误.
在我找到的许多答案中,我读到我必须声明什么T
是有意义的,但是我不能完全理解如何在如此简单的场景中这样做.当然,那些答案在我的脑海中创造了更多的问题,但是现在我只想解释一下我做错了什么(除了不研究泛型)以及如何使它正确.
当我在从.net到Java的过渡中慢慢爬行时,我发现越来越多关于eclipse IDE的有趣事情.我最近偶然发现了它的模板,我很喜欢它.这带给我一个问题:我可以在模板中调用模板吗?当然它只是一个复制和粘贴的问题,但我想知道它是否可以完成.
这实际上与我之前提到过的一个问题有关,但我还是留在这个细节上.我只限于Java 1.4,我想将int
类型转换为Object
.我真的需要使用一个Integer
类对象,或者有一种直接投射它的方法(在1.4中没有自动装箱).这种"手动装箱"的成本是否值得将整个类从第3层导入第1层,从而增加耦合?
非常直截了当的问题.可以在不使用蚂蚁或Maven的情况下完成吗?(而且,我的意思是命令行工具)
请注意,我不想创建一个uberjar,我只是希望已归档的单元"知道"它的外部依赖关系.
我已经搜索了一段时间,虽然它应该很简单,但我就是无法让它工作。根据我见过的例子,这是我到目前为止得到的:
SomeAppService.cs
public async Task<FileStream> Download(long? id)
{
var attachment = await _repository.FirstOrDefaultAsync(x => x.Id == id);
var fileStream = new FileStream($"{attachment.FileName}.{attachment.FileExtension}",
FileMode.Create, FileAccess.Write);
fileStream.Write(attachment.File, 0, attachment.File.Length);
return fileStream;
}
Run Code Online (Sandbox Code Playgroud)
可以注意到,“FileName”、“FileExtension”和“File”(即前述的字节数组)存储在数据库中。附件可以是任何类型的文件,但上传方法中禁止的扩展名除外(未显示)。然后在我的控制器中我有:
SomeController.cs
[AllowAnonymous]
[HttpGet("Download/{id}")]
public async Task<IActionResult> Download(long? id)
{
var fileStream = await appService.Download(id);
return new FileStreamResult(fileStream, "application/octet-stream");
}
Run Code Online (Sandbox Code Playgroud)
然而,当我到达下载端点时,我最终得到一个名为“response”的文件,没有扩展名,大小为 0 字节。
资源:
将 MemoryStream 保存到文件或从文件加载(255 个赞成票的响应让我了解了如何将字节数组转换为文件流,但我不知道这是否有效)
我正在创建一个安装程序,并且在安装过程中必须读取一些资源文件(.xmls,.zip文件,.jar文件等),但我想将它们打包到自定义文件中(即, .dat文件)这样,当分发时,用户不会过多地使用它们.问题是安装程序必须用Java编写,我以前从未用任何编程语言做过这种事情.它甚至可能吗?如果是这样,我怎么能以之后可以被我的Java应用程序读取的方式打包它,如何让我的Java应用程序读取它?
这应该很简单,但我无法绕过它.我需要使用第三方罐子创建一个uberjar.我已经按照这些说明操作了:包含一个非Mavenized依赖项,以便它与maven-shade-plugin一起使用并将它们添加到本地存储库中.但现在呢?每个Maven教程/示例都有点阴暗(双关语),我只是不知道如何正确编辑.pom文件以使其工作.
此外,我对整体阴影"插件"感到困惑.我的意思是,我遵循了基本的Maven教程,它一切都很好,花花公子.但是当我查看树荫插件页面时,除了源代码之外我找不到它下载.我的意思是,这不是一个插件吗?我不应该下载二进制文件并以某种方式将其安装到Maven中吗?
对于极端的noobish问题感到抱歉,但不用说,我知道对Maven的蹲坐.
我见过很多关于从基本类型获取所有类型等的问题,但这并不是我所需要的。例如,我有一个抽象基类:
public abstract class BasePart
{
//whatever
}
Run Code Online (Sandbox Code Playgroud)
我有很多从它派生的类。喜欢...
public class HorizontalPanel : BasePart { //code }
public class VerticalPanel : BasePart { //code }
public class RainBoard : BasePart { //code }
Run Code Online (Sandbox Code Playgroud)
等等。我总是按基类列出它们:
List<BasePart> parts;
Run Code Online (Sandbox Code Playgroud)
我使用类型转换和泛型来做我想做的事情。然而,我需要过滤这个列表,并且我只想要其中可用的类型信息。并且只有一次用于类型。例如,如果我的列表有三个 HorizontalPanels 和两个 VerticalPanels,我想要从中得到的是List<Type>
仅包含{HorizontalPanel, VerticalPanel}
. 我想我可以在链式循环中摆弄对象本身以获得我想要的东西,但我确信 C# 有更好的方法来做到这一点。任何人?
java ×5
c# ×3
jar ×2
asp.net-core ×1
coupling ×1
eclipse ×1
filestream ×1
generics ×1
inheritance ×1
maven ×1
maven-2 ×1
performance ×1
reflection ×1