小编Jin*_*won的帖子

如何从数组类型类中获取元素类型类?

我能Class<T>Class<T[]>吗?

public static <T> void doSometing(final Class<T[]> arrayType) {

    final Class<T> elementType; // = @@?
}
Run Code Online (Sandbox Code Playgroud)

或者,我可以Class<T[]>从中获得Class<T>吗?

java arrays generics class

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

java哪种方法最好?

需求

  1. 有一个给定的 Map<String, String>
  2. 百分比编码每个键/值条目
  3. 按编码键排序条目
  4. 将它们作为单个字符串添加 ?a=b&c=d

方法1

  1. 准备一个TreeMap.
  2. 将这些编码的键/值条目放入此映射.
  3. 迭代映射时连接输出字符串.

方法2

  1. 准备ArrayList预测大小(source-map.size*2)
  2. 在找到正确的位置时插入这些编码键/值
  3. 迭代列表时连接输出字符串

方法3

  1. 准备一个 LinkedList
  2. 在找到正确的位置时插入这些编码键/值
  3. 迭代列表时连接输出字符串

哪种方法最好?

java collections

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

注释上的通用类类型

这可能吗?

class MyService<T> {

    @MyAnnotation(T.class)
    private String myProperty;
}
Run Code Online (Sandbox Code Playgroud)

编译器不喜欢它.我怎样才能做到这一点?

UPDATE

我发现我做不到.请参阅错误设置注释值为常量的Class <?>,为什么?.

java generics

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

编译器优化字节码的情况

我曾经在这里评论.

我建议限制应该预先声明a.length / 2.一个人告诉他,他相信编译器无论如何都会增强它

所以我试过了.

public class Loop1 {
    public static void main(final String[] args) {
        final String[] a = {};
        for (int i = 0; i < a.length / 2; i++) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
public class Loop2 {
    public static void main(final String[] args) {
        final String[] a = {};
        final int l = a.length / 2;
        for (int i = 0; i < l; i++) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我打印这些课程时, …

java compiler-construction optimization javap

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

如何直接为可选列表提供方法引用?

我有一个可为空ListBufferedImage秒.

List<BufferedImage> list = null; // or not null.
Run Code Online (Sandbox Code Playgroud)

我发现我可以像这样刷新列表中的每个图像.

Optional.ofNullable(list)
    .ifPresent(l -> l.forEach(i -> i.flush())); // ok
Run Code Online (Sandbox Code Playgroud)

我可以做到这一点.

Optional.ofNullable(list)
    .ifPresent(l -> l.forEach(BufferedImage::flush)); // ok
Run Code Online (Sandbox Code Playgroud)

为什么编译器在我尝试这样做时会抱怨?

Optional.ofNullable(list)
    .ifPresent(List::forEach(BufferedImage::flush)); // not ok
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

0
推荐指数
2
解决办法
92
查看次数

为什么我不能在C中使用`&& a`?

int main(int argc, char * argv[]) {
  int       a = 10;
  int *    sp = &a;
  int * * dp1 = &sp;
  int * * dp2 = &&a;           // NG
  int * * dp3 = &(&a);         // NG
  int * * dp4 = &((int *) &a); // NG
}
Run Code Online (Sandbox Code Playgroud)
$ cc test.c
test.c: In function ‘main’:
test.c:6:17: error: lvalue required as unary ‘&’ operand
   int * * dp3 = &(&a);         // NG
                 ^
test.c:7:17: error: lvalue required as unary ‘&’ …
Run Code Online (Sandbox Code Playgroud)

c pointers operators address-operator

0
推荐指数
2
解决办法
182
查看次数

我可以在集合上使用 volatile 吗?

我有一个枚举,我想我可以缓存values().

enum MyEnum {

    SOME;

    private static volatile Set<MyEnum> values_;

    public static Set<MyEnum> values_() {
        Set<MyEnum> result = values_;
        if (result == null) {
            values_ = result = Collections.unmodifiableSet(EnumSet.allOf(MyEnum.class));
        }
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了允许重复初始化的延迟初始化。

奏鸣曲也有volatile Set<MyEnum>部分抱怨。

SonaLint:使用线程安全类型;添加“易失性”不足以使该字段成为线程安全的。

https://rules.sonarsource.com/java/RSPEC-3077

我的代码有问题吗?

java enums volatile lazy-initialization

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