小编Hob*_*ist的帖子

在Java中检索当前的大写锁定状态

使用以下代码:

Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)
Run Code Online (Sandbox Code Playgroud)

不幸的是,只返回false.

根据文档,这应该工作:http://docs.oracle.com/javase/8/docs/api/java/awt/Toolkit.html#getLockingKeyState-int-

可运行的例子:

import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class Foo {

    public static void main(String[] args) {

        ExecutorService executorService = Executors.newFixedThreadPool(1);

        executorService.execute(new Runnable() {
            public void run() {
                while(true) {
                    try{ Thread.sleep(250); }catch(Exception ignored) { }
                    System.out.println("Capslock state: " + Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));
                }
            }
        });

        executorService.shutdown();
    }

}
Run Code Online (Sandbox Code Playgroud)

应该补充说我在Windows上使用Java SE 1.8并且我的Caplock键工作正常

控制台输出截图:

在此输入图像描述

java

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

在Java中处理相同类型的不同异常?

在Java中处理错误时,通常会看到超类是错误的错误,例如

Exception, IOException, SocketException, etc.
Run Code Online (Sandbox Code Playgroud)

但是,你如何找到异常的细节?如何从其他类型中单独输出某个异常类型.例如,我正在处理一个小项目,使用Netty.io该项目会为您可以命名的每种类型的读/写错误抛出IOException.这是有道理的,因为最终这是输入/输出错误,但我将如何单独处理它们.

示例例外:

java.io.IOException: An existing connection was forcibly closed by the remote host
java.io.IOException: Connection reset by peer
java.io.IOException: Stream closed
Run Code Online (Sandbox Code Playgroud)

这个列表还在继续,但是你将如何单独处理这些问题,我在环顾四周时发现了一种看起来非常讨厌的方法如下.

try { 
    // ...
} catch (IOException e) { 
    if(e.getMessage().contains("An existing connection was forcibly closed by the remote host")) {
        // Handle error
    } else //...
}
Run Code Online (Sandbox Code Playgroud)

这看起来非常乏味,必然会有更好的方法来做到这一点,correct如果你愿意的话.在过去的几个小时里,我已经查看了相当多的错误处理文档,他们都只谈到了常用的大男孩.IOException, Exception, SocketException, NullPointerException, and FileNotFoundException.如果我错了,我相信SocketException并且FileNotFoundExceptionIOException子类很可能直接相关,更正为我.

无论如何,处理这些异常的正确方法是什么,以及如何确定需要处理的异常类型?我所能做的就是处理,IOException直到出现更精确的东西,但在开发应用程序时,能够唯一地处理每个错误总是好的.

java exception-handling exception ioexception

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

UIButton#t​​itleLabel以编程方式更改后恢复

我有一个@IBOutlet连接到UIButton.在我的代码中,我有以下方法,只要用户执行操作就会执行该方法.我已经设法用一些虚拟函数替换我的代码,向你们展示我的问题是什么.

要复制此问题,我使用的是UITableViewController的子类,您可以在下面看到它:

class MyTableViewController : UITableViewController {

    @IBOutlet nextOrCreateButton: UIButton!

    var dummy = [1, 2]
    var index: Int = 0

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dummy.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        return tableView.dequeueReusableCellWithIdentifier("TemplateCell") as UITableViewCell!
    }

    @IBAction func onNextClicked() {
        if dummy.count == (index + 1) {
            dummy.append(0)
        }
        index++
    }

    func updateUI() { …
Run Code Online (Sandbox Code Playgroud)

ios

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

flatList onEndReached是否为组件顶部?

我想从我的应用程序中删除"加载更多"按钮并实现"无限滚动"类型的功能,该功能允许用户向上滚动其消息历史记录并按照请求下载旧消息.

由于ListView正在被删除,我正在转向FlatList组件,我正在尝试找出一个很好的实现来确定用户何时滚动到页面顶部.由于FlatList总是从列表顶部开始,我们希望确保仅onTopReached在用户滚动列表时调用.

我怎么能这样做?

开放源代码实现的链接将受到赞赏,但应列为注释而不是答案.使用ListView的实现是无关紧要的.

react-native react-native-flatlist

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

是否可以在导航到组件之前预加载它?

我的应用程序中的导航感觉有点卡顿,因为在初始化和第一次渲染调用完成之间,页面总是有一段时间(即使只是一瞬间)是空的。

我已经尽我所能确保组件可以尽可能快地呈现。我已经缓存了我的图像,并且在导航到我的 redux 存储中的组件之前所有数据都可用。我得到之间51ms的记录的时间 constructor componentDidMount这似乎微不足道,但它是不够,你可以直观地看到组件Flash到屏幕上。

我想知道是否有办法预加载组件并确保在显示屏幕之前呈现它。由于这是一个 react-native 应用程序,据我所知,我不能只是“在屏幕外渲染”然后在我准备好时使用它,但我可能是错的。然而,我们也不希望我们所有的屏幕都被不断渲染。

能够做类似的事情..

Preloader.preload(<MyComponent />) .then(navigate('myComponent'))

真的会很好。有时组件有很大的列表,需要一段时间来呈现。当视图滑入屏幕时,列表已经在那里,这会让应用程序的流程感觉好多了。

reactjs react-native react-native-router-flux react-navigation

6
推荐指数
0
解决办法
847
查看次数

如何从ByteBuffer中获取已使用的byte[]

该类java.nio.ByteBuffer有一个ByteBuffer.array()方法,但是它返回一个数组,该数组是缓冲区容量的大小,而不是已使用的容量。因此,我遇到了很多问题。

我注意到 usingByteBuffer.remaining()给出了缓冲区当前正在使用的字节数,所以基本上我正在寻找的是一种byte[]仅获取正在使用的字节的方法。(即,正在显示的字节ByteBuffer.remaining()

我尝试了一些不同的事情,但我似乎失败了,我能想到的唯一解决方法是使用ByteBuffer剩余缓冲区的分配大小创建另一个,然后向其中写入(x)字节。

java bytebuffer

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

将int位转换为浮点位

我正在创建一个缓冲区,它将在横幅中读/写,我可以完全消除TCP分段带来的问题.我遇到的唯一问题是浮点变量,其他一切工作正常,除了浮点数.我找不到有关如何将int32位转换为float的任何信息.

将float转换为int位时,使用以下方法(直接从java的源代码中删除并转换)

private int floatToIntBits(float value)
{
    int result = BitConverter.ToInt32(BitConverter.GetBytes(value), 0);
    if (((result & 0x7F800000) == 0x7F800000) && (result & 0x80000000) != 0)
        result = 0x7fc00000;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

但是,现在我需要做相反的事情,遗憾的是,BitConverter类中没有任何与float一起使用的函数.

我也无法在JavaDocs中找到很多信息,而不是我个人可以使用的任何信息,你可以在这里找到信息.

c# bit-manipulation

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

Java Generics误解

为什么泛型T不能用作classif 的返回类型T extends Class.

例:

public class Foo<T extends Bar> {
    Bar[] array = new Bar[200];

    Optional<T> forIndex(int index) {
        return Optional.ofNullable(array[index]);
    }
}
Run Code Online (Sandbox Code Playgroud)

T需要延长Bar哪个意味着T永远不会有铸造问题,或者我是否误解了这个?有人可以详细说明.

java generics

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

X与Y无关

我一直非常关注续集的文档,当我找到关系时,我遇到了一个问题.这是我非常简单的代码,创建了两个非常基本的1:1关系belongsTo

import Sequelize, { STRING, INTEGER, TEXT } from 'sequelize';

const sequelize = new Sequelize('dbname', '', '');

const User = sequelize.define('user', {
    name: STRING,
    age: INTEGER
});

const Item = sequelize.define('item', {
    name: STRING,
    price: INTEGER
});

Item.belongsTo(User);

sequelize.sync({ force: true }).then(() => {
    User.create({
        name: 'Hobbyist',
        age: 22,
        Item: {
            name: 'Phone',
            price: 199
        }
    }, {
        include: [ Item ]
    });
});
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Unhandled rejection Error: item is not associated to user!
Run Code Online (Sandbox Code Playgroud)

sequelize.js

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

对于不可变对象,传播运算符vs JSON.parse(JSON.stringify(...))

我正在使用Redux,最近遇到了一个问题,我在这里向数组添加消息,Redux状态没有在React上重新渲染.我正在使用这个react-redux库.这是我遇到的问题的一个例子:

// State structure
structure: { messages: {}, groups: {} }

// ---
newState = { ...prevState };
newState.messages[action.message.group] = action.message;
return newState; 
Run Code Online (Sandbox Code Playgroud)

这是更新状态,但它没有触发对反应组件的更新,但是替换newState = { ...prevState }为已newState = JSON.parse(JSON.stringify(prevState))解决问题.

谁能解释为什么会发生这种情况呢?我的印象是传播操作员创建了一个对象的克隆,直到现在我从来没有遇到任何问题.

javascript redux react-redux

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