小编Ked*_*ade的帖子

获取当前正在执行的方法的名称

有没有办法在Java中获取当前正在执行的方法的名称?

java reflection methods

451
推荐指数
14
解决办法
36万
查看次数

可变的hashmap键是危险的做法吗?

将可变对象用作Hashmap键是不好的做法吗?当您尝试使用已修改足以更改其哈希码的密钥从Hashmap检索值时会发生什么?

例如,给定

class Key
{
    int a; //mutable field
    int b; //mutable field

    public int hashcode()
        return foo(a, b);
    // setters setA and setB omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

用代码

HashMap<Key, Value> map = new HashMap<Key, Value>();

Key key1 = new Key(0, 0);
map.put(key1, value1); // value1 is an instance of Value

key1.setA(5);
key1.setB(10);
Run Code Online (Sandbox Code Playgroud)

如果我们现在打电话map.get(key1)怎么办?这是安全的还是可取的?或者行为是否依赖于语言?

hash key hashmap mutable hashcode

59
推荐指数
5
解决办法
2万
查看次数

在Java 8中,为什么Arrays没有给出Iterable的forEach方法?

我必须在这里遗漏一些东西.

在Java 5中,引入了"for-each loop"语句(也称为增强for循环).它似乎主要是为了遍历集合而引入的.任何实现该Iterable接口的集合(或容器)类都可以使用"for-each循环"进行迭代.也许出于历史原因,Java阵列没有实现Iterable接口.但是由于数组无处不在,所以javac会接受在数组上使用for-each循环(生成相当于传统for循环的字节码).

在Java 8中,该forEach方法Iterable作为默认方法添加到接口.这使得将lambda表达式传递给集合(迭代时)成为可能(例如list.forEach(System.out::println)).但同样,阵列不喜欢这种治疗方法.(我知道有解决方法).

有没有技术上的原因为什么javac无法增强以接受forEach中的数组,就像它在增强的for循环中接受它们一样?似乎可以在不要求阵列实现的情况下生成代码Iterable.我天真吗?

这对于自然使用数组的语言的新手来说尤其重要,因为它们的语法容易.切换到列表和使用是不自然的Arrays.asList(1, 2, 3).

java arrays foreach javac java-8

47
推荐指数
2
解决办法
5万
查看次数

引起:java.lang.ClassNotFoundException:com.sun.xml.bind.v2.model.annotation.AnnotationReader

您可能认为以下问题非常简单,但我不知道我在这里做错了什么.我觉得我添加了必需的依赖项.不是吗?

有人可以建议我这里有什么不对吗?

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/bind/v2/model/annotation/AnnotationReader
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:242)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:441)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
    at com.misc.common.ReadXMLFileJaxb.main(ReadXMLFileJaxb.java:14)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.annotation.AnnotationReader
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 23 more
Run Code Online (Sandbox Code Playgroud)

Book.java

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Book {
    @XmlAttribute …
Run Code Online (Sandbox Code Playgroud)

java jaxb maven

26
推荐指数
3
解决办法
6万
查看次数

在Java中,为什么我们可以像使用String一样使用String类?

在Java中我们通常会这样做:

Class myObject = new Class();
Run Code Online (Sandbox Code Playgroud)

因为new关键字返回一个地址.

但为什么我们这样做呢?:

String myString = "Hello";
Run Code Online (Sandbox Code Playgroud)

仿佛String是一个原始人?

我向老师问了这个问题,他回答说这是因为引号中的内容相当于一个地址,但他不确定.你确定吗?

"Hello"是否存储在String类的实例变量中?

java string class

24
推荐指数
3
解决办法
1586
查看次数

如何将我的所有Intellij代码样式导出到.editorconfig文件?

我正在尝试为我的项目设置标准代码样式,并且我找到了http://editorconfig.org/,这是一个标准.我非常喜欢它,Intellij支持它(我们使用Intellij).

但我已经阅读了很多内容,但我还没有找到如何将Intellij的所有代码样式导出到.editorconfig文件.我只能将它们导出到仅适用于Intellij的XML.

或者是否有任何网页可以读取Java的所有editorconfig域特定属性?在editorconfig github wiki中,他们只有几个.

java intellij-idea editorconfig

20
推荐指数
3
解决办法
7985
查看次数

什么是在图中查找哈密顿循环的动态规划算法?

什么是在无向图中找到哈密顿循环的动态规划算法?我在某处看到存在一种具有O(n.2^n)时间复杂度的算法.

algorithm graph cycle dynamic-programming hamiltonian-cycle

19
推荐指数
1
解决办法
1万
查看次数

如何用Java输入一个句子

我写的代码只是输入一个字符串,而不是整个句子,我想把整个句子作为输入:

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i; 
        i= scan.nextInt();
        double d;
        d=scan.nextDouble();
        String s;
        s=scan.next();
        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}
Run Code Online (Sandbox Code Playgroud)

测试用例是"欢迎使用Java",它只是在输出中显示"欢迎".其他一切都很好.请帮忙.

java

10
推荐指数
2
解决办法
5960
查看次数

为什么Eclipse没有显示流的泄漏警告?

在Eclipse Neon中,如果我编写这个Java代码:

Stream<Object> stream = Stream.builder().build();
Run Code Online (Sandbox Code Playgroud)

我没有泄漏警告,但如果我实施Stream,如

public class MyStream<T> implements Stream<T> {
    // implementation
}
Run Code Online (Sandbox Code Playgroud)

我写了类似的代码

Stream<Object> stream = new MyStream<>();
Run Code Online (Sandbox Code Playgroud)

我收到Resource leak: 'stream' is never closed警告 这只发生在Eclipse中,而编译时javac不会发出任何警告.

注意我不是在寻找关于如何关闭流等的答案,而是寻找解释同一界面的这种不同行为的原因的答案.

java eclipse java-stream

6
推荐指数
1
解决办法
138
查看次数

Kafka引入了应用程序设计原则

我想深入了解Kafka的流处理,我需要一些帮助来了解一些目前对我来说不太清楚的设计原则.

1.)假设我有一些实时股票价格数据.你会用股票代码将一个主题"价格"键入(并因此进行分区)吗?或者你会为每个符号制作一个主题吗?例如,如果我决定生产(添加)更多的股票代码,包括以后的完整历史记录,会发生什么?现在我的历史(在日志中订购)主题"价格"是一团糟,对吗?另一方面,对于每个价格序列,我想稍后计算回报,如果它们在不同的主题上,我必须跟踪它们并为每个单个符号启动新的流应用程序.

2.)现在有不同的实时价格,我需要将它们的任意数量加入一个大记录中.例如,将所有sp500符号连接到一个记录中.因为我在同一时间没有所有sp500符号的价格,但可能非常接近.如果在这个确切的时间遗失一个,我如何使用最新价格加入他们?

3.)说我已经解决了加入用例,并将所有sp500股票的连接记录反馈到Kafka.如果我犯了错误而忘记了一个符号,我该怎么办?显然,我想将它添加到流中.现在我需要点击"sp500"日志并重建它吗?或者是否有某种机制将起始偏移重置为特定的偏移量(我已经修复了连接的偏移量)?我也很可能有其他流应用程序正在消耗这个主题.他们还需要进行某种重置/重放.不存储sp500主题但是让它成为长流过程的一部分可能更好吗?但后来我最终会多次做同样的连接.

4.)也许这应该是1.因为这是我的目标^^的一部分 - 但是,我怎么能像这样建模数据流:

produce prices -> calculate returns -> join several returns into a row vector -> calculate covariance (window of rowvectors) -> join covariance with returns  
                                                                               ->                                             -> into a tuple (ret, cov)
Run Code Online (Sandbox Code Playgroud)

我甚至不确定使用今天的流处理是否可以使用这么复杂的用例.

streaming apache-kafka

6
推荐指数
1
解决办法
490
查看次数