Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。


8
具有InputStream长度示例的AmazonS3 putObject
我正在使用Java将文件上传到S3-到目前为止,这是我得到的: AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials("XX","YY")); List<Bucket> buckets = s3.listBuckets(); s3.putObject(new PutObjectRequest(buckets.get(0).getName(), fileName, stream, new ObjectMetadata())); 文件正在上传,但是未设置内容长度时会发出警告: com.amazonaws.services.s3.AmazonS3Client putObject: No content length specified for stream > data. Stream contents will be buffered in memory and could result in out of memory errors. 这是我上传文件和stream变量是InputStream,从中我可以得到字节数组是这样的:IOUtils.toByteArray(stream)。 因此,当我尝试像这样设置内容长度和MD5(从此处获取)时: // get MD5 base64 hash …


2
您如何使用intellij Idea Editor剖析Java源代码?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 4年前关闭。 改善这个问题 我知道Netbeans具有某种“集成的”探查器,例如,您可以运行单元测试,并使用它来分析和查找导致瓶颈的地方,从而减慢了它们的速度。是否可以在IntelliJ IDEA编辑器中分析代码?

6
将File.listFiles与FileNameExtensionFilter一起使用
我想在目录中获取具有特定扩展名的文件列表。在API(Java 6)中,我看到了File.listFiles(FileFilter)可以做到这一点的方法。 由于我需要特定的扩展名,因此我创建了一个FileNameExtensionFilter。但是,与此同时使用时listFiles,出现编译错误。我以为自以来FileNameExtensionFilter implements FileFilter,我应该能够做到这一点。代码如下: FileNameExtensionFilter filter = new FileNameExtensionFilter("text only","txt"); String dir = "/users/blah/dirname"; File f[] = (new File(dir)).listFiles(filter); 最后一行显示编译错误: File类型的方法listFiles(FileNameFilter)不适用于FileNameExtensionFilter类型的参数 我正在尝试使用listFiles(FileFilter),不是listFiles(FileNameFilter)。为何编译器无法识别这一点? 如果我编写自己的扩展过滤器extend,则此方法有效FileFilter。我宁愿用而不愿FileNameExtensionFilter自己写。我究竟做错了什么?
82 java  file  filter  java-6 


2
何时在无状态会话bean上使用有状态会话bean?
有状态会话Bean定义如下: 有状态会话Bean对象的状态由其实例变量的值组成。在有状态会话Bean中,实例变量代表唯一的客户端Bean会话的状态。因为客户端与其bean进行交互(“交谈”),所以这种状态通常称为对话状态。 无状态会话Bean定义如下: 无状态会话Bean无状态会话Bean不会与客户端保持对话状态。当客户端调用无状态Bean的方法时,该Bean的实例变量可能包含特定于该客户端的状态,但仅限于调用期间。该方法完成后,不应保留特定于客户端的状态。但是,客户端可以更改池化的无状态Bean中实例变量的状态,并且此状态将保留到池化的无状态Bean的下一次调用中。除了方法调用期间,无状态bean的所有实例都是等效的,从而允许EJB容器将实例分配给任何客户端。也就是说,无状态会话Bean的状态应适用于所有客户端。 与有状态会话Bean相比,使用无状态会话Bean的优势如下: 因为无状态会话Bean可以支持多个客户端,所以它们可以为需要大量客户端的应用程序提供更好的可伸缩性。通常,与支持相同数量的客户端的有状态会话Bean相比,应用程序需要的无状态会话Bean更少。 因此想到的问题是何时应该使用有状态会话Bean?就我对此事的幼稚理解而言,应该坚持使用无状态会话bean。 应该使用有状态会话bean的候选对象是什么?有什么好的例子吗? 会话Bean

4
如何在Java中获取当前的类名,包括包名?
我正在研究一个项目,一个要求是,如果main方法的第二个参数以“ /”开头(对于linux),则应将其视为绝对路径(不是问题),但如果它不是以“”开头/”,则它应获取该类的当前工作路径,并将其附加给定的参数。 我可以通过几种方式获取类名:System.getProperty("java.class.path"),new File(".")和getCanonicalPath(),等等。 问题是,这仅给我提供了存储软件包的目录-即,如果我在“ .../project/this/is/package/name”中存储了一个类,则只会给我“ /project/”,而忽略了实际.class files存在的软件包名称。 有什么建议么? 编辑:这是从练习说明中得到的解释 sourcedir可以是绝对的(以“ /”开头),也可以是相对于我们从中运行程序的位置 sourcedir是main方法的给定参数。我如何找到那条路?


1
吞吐量原理说明
我读了O'Reilly的书,因为我了解了这一计算原理。 extends当您仅从结构中获取值时,请使用通配符。 super仅将值放入结构时,请使用通配符。 当您都想从结构中放入和放置结构时,请不要使用通配符。 例外情况是: extends除了值null(属于每个引用类型)之外,您不能将任何其他内容放入用通配符声明的类型中。 您不能从使用super通配符声明的类型中获取任何东西,除了type的值(Object这是每个引用类型的超类型)之外。 谁能帮助我深入探索这个规则?如果可能的话,请把它们分层。
82 java  generics 

8
如何在IntelliJ中更改Maven的Java版本?
我是Maven和IntelliJ IDEA的新手。 我有一个用Java 8编写的Maven项目。每当尝试构建它时(Maven项目窗口->生命周期->编译->运行Maven Build),都会出现一系列编译错误: [ERROR] path/to/file.java:[26,52] lambda expressions are not supported in -source 1.5 (use -source 8 or higher to enable lambda expressions) 我应该在哪里更改-source参数的值?我尝试在设置->编译器-> Java编译器中将它作为附加参数添加,但是得到了相同的结果。 项目和模块的语言级别都设置为8.0。 我正在使用Maven 3.2.3和IntelliJ IDEA社区版13.1.2。

6
测试对象是否为参数类型的实例
有没有办法确定对象是否是泛型类型的实例? public <T> test(Object obj) { if (obj instanceof T) { ... } } 这显然行不通。有其他选择吗?就像我想使用Java反射来实例化一个类,然后检查以确保它是通用类型T。

6
为什么将Python异常命名为“错误”?
为什么Python的异常命名为“错误”(例如ZeroDivisionError,NameError,TypeError),而不是“例外”(例如ZeroDivisionException,NameException,TypeException)。 我来自Java背景,最近开始学习Python,这令人困惑,因为在Java中错误与异常之间是有区别的。 Python也有区别吗?
82 java  python  exception 

4
通过Gradle运行Java类时传递系统属性和参数时出现问题
我正在尝试通过Gradle运行命令行Java应用程序,作为快速集成测试的一部分。我正在从Maven移植构建脚本,可以通过轻松完成exec-maven-plugin。我的两个主要要求是: 能够将系统属性传递给可执行Java代码 能够将命令行参数传递给可执行的Java代码 请注意,我不是要在构建脚本中读取这些属性,而是要在由脚本构建和执行的Java程序中读取它们。 我发现了另外两个SO帖子,它们通过Gradle解决了Java程序的执行:一个在提倡apply plugin: "application"在构建文件中和gradle run命令行中使用的答案task execute(type:JavaExec)gradle execute,另一个在提倡在构建文件中以及在构建文件中使用该方法的答案。命令行。我尝试了两种方法,但都没有成功。 我有两个问题: (1)我无法获取Java可执行文件来读取系统属性 我是否这样做: build.gradle: apply plugin: 'application' mainClassName = "com.mycompany.MyMain" 命令行: gradle run -Dmyproperty=myvalue 或这个: build.gradle: task execute (type:JavaExec) { main = "com.mycompany.MyMain" classpath = sourceSets.main.runtimeClasspath } 命令行: gradle execute -Dmyproperty=myvalue 无论哪种情况,myproperty都无法通过。从开始运行的代码MyMain.main (...)将myproperty系统属性读取为null / missing。 (2)我无法传递命令行参数 这可能与第一个问题有关。exec-maven-plugin例如,在中,命令行参数本身是通过system属性传递的。Gradle就是这种情况,还是有另一种传递命令行参数的方式? 如何获得这些变量?另外,还是使用apply plugin: 'application'还是更好task …
82 java  gradle 

9
Java 8:使用换行符和缩进格式格式化lambda
我想通过lambda缩进实现以下内容: 多行语句: String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "Rick (M)" }; List<String> strings = Arrays.stream(ppl) .filter( (x) -> { return x.contains("(M)"); } ).collect(Collectors.toList()); strings.stream().forEach(System.out::println); 单行语句: List<String> strings = Arrays.stream(ppl) .map((x) -> x.toUpperCase()) .filter((x) -> x.contains("(M)")) .collect(Collectors.toList()); 当前,Eclipse将自动格式化为以下格式: 多行语句: String[] ppl …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.