小编Dzi*_*eIT的帖子

这种使用varargs安全吗?

我有一种util方法将类型的varargs转换为该类型的数组 - 它看起来像这样:

public K[] array(K... ks) {
    return ks;
}
Run Code Online (Sandbox Code Playgroud)

用例是这样的,不是在调用需要数组的方法时定义数组,而是简单地做数组(val1,val2,val3).

但是,IntelliJ给了我堆污染警告.我理解这在某种程度上意味着什么,但我对具体细节没有多少经验 - 所以,我想知道我是否可以添加@SafeVarargs以及这种方法是否真的安全.

IntelliJ说:

  问题简介第249行参数化vararg类型可能造成的堆污染

问题解决方案将最终和注释设为@SafeVarargs

K被声明为类的类型参数,以及V.

java

20
推荐指数
1
解决办法
947
查看次数

ASM 4(Java Library)教程?

我最近一直在使用Java库'ASM',它用于在运行时修改字节码,以防人们不知道,而且我无法在ASM 4上找到一个教程.除了官方手册之外ASM 4,它引用了甚至不存在的ASM类.

我想知道是否有人知道该库的任何教程,其中包括基本到中间事物,例如将一些代码插入到方法中.

java bytecode bytecode-manipulation

9
推荐指数
1
解决办法
7083
查看次数

修改Javassist中的行号

所以我最近一直在使用Javassist,我遇到了一个我无法找到答案的问题.CtMethod的insertAt方法允许您在特定的行号处插入代码,但是它会覆盖该行还是保留它,如何使它与默认情况相反?我有一个应用程序,它在运行时之前使用Javassist修改源代码,基于XML文件中的"钩子".我想这样做是为了可以覆盖一条线,或者可以在线上方放置一条线而不是覆盖它.显然有一些黑客的方法可以做到这一点,但我宁愿使用正确的方法.

java javassist

3
推荐指数
1
解决办法
1893
查看次数

结合 MethodHandles.publicLookup() 和 Method.setAccessible(true)

我知道这publicLookup()lookup()公共方法更快,我想利用它。如果我要MethodHandles.publicLookup().unreflect(Method)在一个Method本来就不是公开的但我已经调用过的对象setAccessible(true)上使用,它会起作用吗?

java reflection java-8 methodhandle

3
推荐指数
1
解决办法
218
查看次数

从Collection <Long>直接转换为LongStream

我有一个Collection<Long>(从Map<UUID, Long>values()方法获得),我想将其转换为LongStream

我能想到的最简单的方法是:

LongStream stream = map.values().stream().mapToLong(Long::longValue);
Run Code Online (Sandbox Code Playgroud)

但是,令我惊讶的是,应该有一种更简单的方法来从盒装等效项的集合中获取原始流。

我检查了一下StreamSupport,只能找到StreamSupport.longStream(Spliterator.OfLong spliterator, boolean parallel),但是似乎没有一种简单的方法可以OfLongCollection<Long>任何一个中获取一个splitter实例。

我当然可以创建自己的实用程序函数来执行上述mapToLong功能,但是如果有内置功能,我宁愿使用它。如果已经提出要求,我们也很抱歉-我进行了搜索,但什么也没找到。

java java-8 java-stream

3
推荐指数
1
解决办法
85
查看次数

+运算符何时比StringBuilder更快?

在过去,我一直认为你应该使用StringBuilderappend(String)构建带变量的字符串,而不是string += split[i].在什么情况下这是准确的?我问,因为通常,如果我要写下面的内容:

String[] split = args; // command line arguments or whatever
String myString = "";
for (int i = 0; i < split.length; i++) {
    myString += split[i];
}
Run Code Online (Sandbox Code Playgroud)

我的IDE告诉我它应该转换为使用StringBuilder.但是,写这样的东西:

StringBuilder build = new StringBuilder();
build.append("the ").append(build.toString()).append(" is bad").append(randomvar);
build.toString();
Run Code Online (Sandbox Code Playgroud)

当我应该使用String时,IntelliJ实际上使用StringBuilder列为性能问题.它被列为性能问题的事实表明它实际上可能导致问题,而不是仅仅是一点点慢.

我注意到第一个例子是一个循环,第二个例子不是 - 是一个建议用于大量连接的StringBuilder,但是正常连接对于非循环情况更好(这也意味着在循环中运算符+=将被使用,而在外部它可能是一个循环"the " + build.toString() + " is bad" + randomVar- 是+ =问题而不是+?)

java

2
推荐指数
1
解决办法
2949
查看次数

将PHP变量添加到HTML代码中

我有一个PHP变量,$id我之前在PHP代码中检索过它.需要将此变量添加到HTML标记中的字符串中,如下所示:

<iframe width="420" height="345" src="http://www.youtube.com/embed/" ID GOES HERE ></iframe>
Run Code Online (Sandbox Code Playgroud)

但是,我不知道该怎么做.任何帮助表示赞赏:)

html php variables

0
推荐指数
1
解决办法
58
查看次数