小编Rad*_*def的帖子

Java嵌套泛型类型

为什么必须使用泛型类型Map<?, ? extends List<?>>而不是更简单Map<?, List<?>>test()方法?

public static void main(String[] args) {
    Map<Integer, List<String>> mappy =
        new HashMap<Integer, List<String>>();

    test(mappy);
}

public static void test(Map<?, ? extends List<?>> m) {}

// Doesn't compile
// public static void test(Map<?, List<?>> m) {}
Run Code Online (Sandbox Code Playgroud)

注意到以下工作,并且三种方法无论如何都具有相同的擦除类型.

public static <E> void test(Map<?, List<E>> m) {}
Run Code Online (Sandbox Code Playgroud)

java generics bounded-wildcard unbounded-wildcard

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

使用java.awt.Robot键入String

我已经知道如何使用java.awt.Robot键入单个字符keyPress,如下所示.如何文本框中一次输入一个完整的预定义String值?

robot.keyPress(KeyEvent.VK_1);
robot.keyPress(KeyEvent.VK_1);
robot.keyPress(KeyEvent.VK_1);  
// instead, enter String x = "111"
Run Code Online (Sandbox Code Playgroud)

java swing awtrobot

25
推荐指数
3
解决办法
2万
查看次数

Java中的音量控制(增加或减少)

如何使用Java增加传出wav音频流的音量?我遇到了各种Java TTS引擎和合成语音输出量的问题.是否有API调用或doo-hickey.jar我可以用来提高音量?

java audio javasound

21
推荐指数
2
解决办法
7万
查看次数

Java lambda表达式,转换和比较器

我正在查看Map界面的Java源代码,并遇到了这一小段代码:

    /**
     * Returns a comparator that compares {@link Map.Entry} in natural order on value.
     *
     * <p>The returned comparator is serializable and throws {@link
     * NullPointerException} when comparing an entry with null values.
     *
     * @param <K> the type of the map keys
     * @param <V> the {@link Comparable} type of the map values
     * @return a comparator that compares {@link Map.Entry} in natural order on value.
     * @see Comparable
     * @since 1.8
     */
    public static <K, …
Run Code Online (Sandbox Code Playgroud)

java lambda casting java-8

21
推荐指数
3
解决办法
8949
查看次数

数组如何在Java中"记住"它们的类型?

请考虑以下代码:

class AA { }

class BB extends AA { }

public class Testing {

    public static void main(String[] args) {
        BB[] arr = new BB[10];
        AA[] arr2 = arr;

        BB b = new BB();
        AA a = new AA();
        arr2[0] = a; // ArrayStoreException at runtime
        arr2[1] = b;

        List<BB> listBB = new ArrayList<>();
        List listAA = listBB;
        listAA.add("hello world.txt");

    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,ArrayStoreException我尝试了arr2[0] = a.这意味着数组会记住它必须接受的类型.但是List不记得他们了.它只是编译并运行良好.在ClassCastException当我检索对象将被抛出BB.

所以问题是:

  1. 数组如何记住它的类型(我知道它被称为"具体化").这究竟是怎么发生的?

  2. 并且为什么只有阵列才能获得这种功率,但是ArrayList …

java arrays generics arraylist

20
推荐指数
2
解决办法
967
查看次数

为什么"a ^ = b ^ = a ^ = b;" 与"a ^ = b; b ^ = a; a ^ = b;"不同?

我尝试使用XOR在不使用第三个变量的情况下在Java中交换两个整数的代码.

以下是我尝试的两个交换函数:

package lang.numeric;

public class SwapVarsDemo {

    public static void main(String[] args) {
        int a = 2984;
        int b = 87593;
        swapDemo1(a,b);
        swapDemo2(a,b);
    }

    private static void swapDemo1(int a, int b) {
        a^=b^=a^=b;
        System.out.println("After swap: "+a+","+b);
    }

    private static void swapDemo2(int a, int b) {
        a^=b;
        b^=a;
        a^=b;
        System.out.println("After swap: "+a+","+b);
    }

}
Run Code Online (Sandbox Code Playgroud)

此代码生成的输出如下:

After swap: 0,2984
After swap: 87593,2984
Run Code Online (Sandbox Code Playgroud)

我很想知道,为什么这句话:

        a^=b^=a^=b;
Run Code Online (Sandbox Code Playgroud)

与此不同?

        a^=b;
        b^=a;
        a^=b;
Run Code Online (Sandbox Code Playgroud)

java expression-evaluation compound-assignment

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

只有在try和catch块中没有抛出异常时,Java才会运行代码?

如何在没有抛出异常的情况下运行代码?

最后代码运行是否有异常.

try {
   //do something
} catch (Exception e) {}
//do something only if nothing was thrown
Run Code Online (Sandbox Code Playgroud)

java exception-handling try-catch

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

java线程在创建之前访问外部对象

是的,这是一个学术问题,我知道人们会抱怨我没有发布任何代码,但我真的很震惊这个问题,真的不知道从哪里开始.我真的很感激解释和一些代码示例.

如果对象构造函数启动一个执行匿名内部类对象的方法运行的新线程,则该新线程可能在完全构造并且其字段完全初始化之前可以访问其周围的外部对象.你会如何防止这种情况发生?

java multithreading anonymous inner-classes

19
推荐指数
2
解决办法
2029
查看次数

如何使用Java Sound中的音频样本数据?

这个问题通常被问到是另一个问题的一部分,但事实证明答案很长.我决定在这里回答它,所以我可以在其他地方链接到它.

虽然我不知道Java此时可以为我们生成音频样本的方式,但如果将来发生变化,这可能是一个适合它的地方.我知道JavaFX有一些这样的东西,例如AudioSpectrumListener,但仍然不能直接访问样本.


我正在javax.sound.sampled用于播放和/或录制,但我想对音频做些什么.

也许我想直观地展示它或以某种方式处理它.

如何使用Java Sound访问音频样本数据?

也可以看看:

java audio javasound audio-processing javax.sound.sampled

18
推荐指数
1
解决办法
9775
查看次数

为什么不将Object用于所有方法参数?

public class helloworld {
    public static void main(String[] args) {
        String text = "Hello World";
        l(text);
        int n = 0;
        l("--------------------------");
        l(n);   
    }

    public static void l(Object obj) {
        System.out.println(obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

我用Java编写了这个简单的程序,它起作用了.现在我很困惑,如果所有的数据类型(int,char,double等)来下的Object,那么为什么我们指定我们希望,当我们值传递给接受哪种数据类型?

我的意思是我们总是可以使用Object函数中使用的数据类型l.是否有一个特定的原因,人们不总是使用Object他们的数据类型来传递值?

java variables parameter-passing

18
推荐指数
2
解决办法
1021
查看次数