小编Rad*_*def的帖子

如何获取Mac OSX上的窗口标题列表?

我想获取当前正在运行的应用程序的窗口标题列表.

在Windows上我有EnumWndProc和GetWindowText.

在Linux上我有XGetWindowProperty和XFetchName.

什么是Native Mac等价物?

api macos objective-c

17
推荐指数
2
解决办法
8226
查看次数

调用类型变量的基类和派生静态方法

我有以下示例:

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        A<ConcreteErrorHandler> a = new A<ConcreteErrorHandler>();
        a.m(); //Exception here!
    }

    public static class AbstractErrorHandler {
        public static void handle(){ 
            throw new UnsupportedOperationException("Not implemented");
        }
    }

    public static class ConcreteErrorHandler extends AbstractErrorHandler{
        public static void handle(){ 
            System.out.println("Concrete handler");
        }
    }

    public static class A<T extends AbstractErrorHandler>{
        public void m(){
            T.handle();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

IDEONE

为什么调用基类的方法,而不是派生的方法?handle()方法的签名完全相同.我知道静态方法不会继承,但是在我的情况下不应该抛出编译时错误吗?

有人可以解释这种行为吗?

java generics static

17
推荐指数
2
解决办法
642
查看次数

Java规范在哪里说List <T>分配给List <?超级T>?

假设类B继承自类A.以下是合法的Java:

List<A> x;
List<? super B> y = x;
Run Code Online (Sandbox Code Playgroud)

就规范而言,这意味着List<A>assignsTo List<? super B>.但是,我无法找到说这是合法的规范部分.特别是,我认为我们应该有子类型关系

List<A>  <:  List<? super B>
Run Code Online (Sandbox Code Playgroud)

但是Java 8规范的4.10节将子类型关系S >1 T定义为直接超类型关系的传递闭包,并且它根据计算一组超类型的有限函数来定义直接超类型关系T.由于可能存在任意数量的s继承,因此输入List<A>可以产生无限制函数,因此spec的子类型定义似乎为超级通配符分解.关于"类和接口类型之间的子类型"的第4.10.2节确实提到了通配符,但它只处理通配符出现在潜在子类型中的另一个方向(此方向适合计算的直接超类型机制).List<? super B>BA

问题:规范的哪一部分说上面的代码是合法的?

动机是针对编译器代码的,因此仅仅理解它为何直观合法或者提出一种处理它的算法是不够的.由于Java中的一般子类型问题是不可判定的,我想处理与规范完全相同的情况,因此需要处理此案例的规范部分.

java generics subtyping bounded-wildcard

16
推荐指数
1
解决办法
249
查看次数

为什么javac认为在泛型类上使用泛型返回调用方法是不安全的?

请考虑以下代码:

public class Main {
    public static class NormalClass {
        public Class<Integer> method() {
            return Integer.class;
        }
    }

    public static class GenericClass<T> {
        public Class<Integer> method() {
            return Integer.class;
        }
    }

    public static void main(String... args) {
        NormalClass safeInstance = new NormalClass();
        Class<Integer> safeValue = safeInstance.method();

        GenericClass unsafeInstance = new GenericClass();
        Class<Integer> unsafeValue = unsafeInstance.method();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我编译它:

$ javac -Xlint:unchecked Main.java 
Run Code Online (Sandbox Code Playgroud)

它返回:

Main.java:16: warning: [unchecked] unchecked conversion
        Class<Integer> unsafeValue = unsafeInstance.method();
                                                          ^
  required: Class<Integer>
  found:    Class
1 warning
Run Code Online (Sandbox Code Playgroud)

请注意,即使返回类型没有引用泛型类型,也只会将通用方法视为不安全. …

java generics javac raw-types

16
推荐指数
1
解决办法
723
查看次数

使用泛型类实现Comparable

我想定义一个实现通用Comparable接口的类.在我的课堂上,我还定义了一个泛型类型元素T.为了实现接口,我将比较委托给T.这是我的代码:

public class Item<T extends Comparable<T>> implements Comparable<Item> {

    private int s;
    private T t;

    public T getT() {
        return t;
    }

    @Override
    public int compareTo(Item o) {
        return getT().compareTo(o.getT());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我收到以下错误信息:

Item.java:11: error: method compareTo in interface Comparable<T#2> cannot be applied to given types;
        return getT().compareTo(o.getT());
                     ^
  required: T#1
  found: Comparable
  reason: actual argument Comparable cannot be converted to T#1 by method invocation conversion
  where T#1,T#2 are type-variables:
    T#1 extends Comparable<T#1> declared in class …
Run Code Online (Sandbox Code Playgroud)

java generics interface comparable raw-types

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

如何将扫描仪输入放入数组中...例如几个数字

Scanner scan = new Scanner(System.in);
double numbers = scan.nextDouble();
double[] avg =..????
Run Code Online (Sandbox Code Playgroud)

java arrays java.util.scanner

14
推荐指数
2
解决办法
34万
查看次数

如何在Java中使用反射创建枚举实例?

当我阅读Effective Java时,作者告诉我单元素enum类型是实现单例的最佳方式,因为我们不必考虑复杂的序列化或反射攻击.这意味着我们无法创建enum使用反射的实例,对吧?

我做了一些测试,enum这里有一个类:

public enum Weekday {}
Run Code Online (Sandbox Code Playgroud)

然后我尝试创建一个实例Weekday:

Class<Weekday> weekdayClass = Weekday.class;
Constructor<Weekday> cw = weekdayClass.getConstructor(null);
cw.setAccessible(true);
cw.newInstance(null);
Run Code Online (Sandbox Code Playgroud)

如你所知,它不起作用.当我改变关键词enumclass,它有效.我想知道为什么.谢谢.

java reflection enums

13
推荐指数
4
解决办法
2万
查看次数

由于java语言规则或jvm,是否将字节转换为int?

byte a = 1;
byte b = 1;
byte c = a + b;
Run Code Online (Sandbox Code Playgroud)

引发错误:可能会损失精度

byte subt = a_s - a_b;
                ^
  required: byte
  found:    int
Run Code Online (Sandbox Code Playgroud)

这种行为是与jvm有关还是在java语言中定义的.

编辑:如果它是用java语言定义然后这样做是因为记住jvm?

表示如果java支持byte数据类型,那么为什么会operation on byte产生结果int

java byte operation type-conversion type-promotion

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

从未调用过CoreAudio AudioQueue回调函数,没有报告错误

我试图从文件功能做一个简单的回放,似乎我的回调函数永远不会被调用.它并没有真正意义,因为所有OSStatus都返回0,其他数字也都显示正确(就像输出数据包从AudioFileReadPackets读取指针).

这是设置:

OSStatus stat;

stat = AudioFileOpenURL(
    (CFURLRef)urlpath, kAudioFileReadPermission, 0, &aStreamData->aFile
);

UInt32 dsze = 0;
stat = AudioFileGetPropertyInfo(
    aStreamData->aFile, kAudioFilePropertyDataFormat, &dsze, 0
);

stat = AudioFileGetProperty(
    aStreamData->aFile, kAudioFilePropertyDataFormat, &dsze, &aStreamData->aDescription
);

stat = AudioQueueNewOutput(
    &aStreamData->aDescription, bufferCallback, aStreamData, NULL, NULL, 0, &aStreamData->aQueue
);

aStreamData->pOffset = 0;

for(int i = 0; i < NUM_BUFFERS; i++) {
    stat = AudioQueueAllocateBuffer(
        aStreamData->aQueue, aStreamData->aDescription.mBytesPerPacket, &aStreamData->aBuffer[i]
    );

    bufferCallback(aStreamData, aStreamData->aQueue, aStreamData->aBuffer[i]);
}

stat = AudioQueuePrime(aStreamData->aQueue, 0, NULL);
stat = AudioQueueStart(aStreamData->aQueue, NULL);
Run Code Online (Sandbox Code Playgroud)

(未显示的是我正在检查stat函数之间的值,它只是恢复正常.)

和回调函数:

void …
Run Code Online (Sandbox Code Playgroud)

macos objective-c callback core-audio audioqueue

13
推荐指数
1
解决办法
2971
查看次数

如何在Java Swing中动态控制自动调整大小的组件

用Java创建一个新的GUI(1.8)Swing,我正在寻找一种方法来覆盖所有组件的resize行为.

让我用一些编辑过的照片向你解释:

1.全屏GUI

这是我的全屏GUI,有3个面板和一个JToolBar.绿色的需要具有固定的大小,其他的可以调整大小.

目前,我只有2个小GridLayout组织它们(一个垂直,一个水平绿色和青色面板).

FullScreen GUI

2.小​​水平调整大小

例如,如果我从右侧缩小框架尺寸,我希望根据新的框架尺寸调整蓝色和青色面板的大小.但必须修复绿色面板.(这不是我认为最困难的部分.)

一旦GUI调整大小

3.最小水平尺寸

这对我来说是最困难的部分.一旦青色(或蓝色)面板达到最小尺寸,我希望他将绿色面板" "到左侧,即使它从框架上消失.

当然,将框架向右拉,将使绿色面板再次出现.

GUI的最小大小

我怎么能这样做?

我想使用JSplitPane或特定的监听器手动决定调整大小行为,但我需要一些建议.

对不起,如果现有的帖子可以回答这个问题,我没有找到任何答案来解释这个问题.

提前致谢!


如果您想要更多示例,请查看"Evernote"软件,该软件的行为方式相同

java user-interface swing resize autoresize

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