小编Sam*_*mer的帖子

断言不起作用

我正在尝试编写一个断言来检查用户给出的大小是否为正值,如果不是则将其设为正值,此语句位于类构造函数内部,该构造函数采用size值然后生成数组[size].我写了下面的代码,我认为是正确的.

    public Grid(int size) {


    try{
        assert size > 0 ;
    }
    catch(AssertionError e){
        size = Math.abs(size);
    }

    setLayout(new GridLayout(size, size));
    grid = new JButton[size][size];
}
Run Code Online (Sandbox Code Playgroud)

虽然我似乎永远不会评估我的断言并继续该程序然后导致NegativeArraySize错误(我试图避免)

我也试过了

assert size>0;
Run Code Online (Sandbox Code Playgroud)

并且程序无法停止负值.

我最近在mac上运行java时遇到了一些问题,所以我不知道我的代码是否正确,或者它是否只是其中一个奇怪的mac怪癖!并且应该使用

size=Math.abs(size);
Run Code Online (Sandbox Code Playgroud)

谢谢山姆,

java macos swing osx-snow-leopard

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

使用反射解压缩数组

我正在尝试解压缩从反射对象字段获得的数组.我将常规字段的值设置为Object.如果它是一个数组,那么我想将我的一般对象转换为一个数组(无论它的类型)并提取其内容

fields[i].setAccessible(true);
        String key = fields[i].getName();
        Object value = fields[i].get(obj);

        if (value.getClass().isArray()){
            unpackArray(value);
        }
Run Code Online (Sandbox Code Playgroud)

在我的unpackArray方法中,我尝试将Object Value转换为java.util.Arrays,java.reflect.Array和Array [],但每次都不让我.

有没有办法将我的Object转换为通用数组?

非常感谢Sam

java arrays reflection

10
推荐指数
1
解决办法
4913
查看次数

正则表达式在乳胶环境中找到并替换

我正在尝试使用正则表达式来查找和替换,以便我可以找到所有'('对齐环境中使用的'字符.示例文本:

Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem Ipsum Lorem Ipsum (Lorem Ipsum Lorem Ipsum )
Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum 
\begin{align}
\frac{d_l}{2}< |\epsilon_H(g(m))| <\frac{d_r}{2} 
\frac{d_l}{2}< |\epsilon_H(g(m))| <\frac{d_r}{2} 
\end{align}
Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Run Code Online (Sandbox Code Playgroud)

然后我想找到所有的"("内\begin{align}\end{align}和不是文本的主体内我到目前为止有正则表达式:

(?<=\{align\})\s(.*)\s(.*)\s(?=\\end\{align\})
Run Code Online (Sandbox Code Playgroud)

但这只能查找环境中的所有文本,而不是'('.

(这背后的原因是因为我要通过我的整个文件和更改所有的"("里面的方程" \left(",我不想改变,可以使用文本中出现的任何括号内.)

regex perl latex

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

使用Java Reflection Bad Practice?

我正在为客户端构建应用程序,我需要能够通过字符串引用字段值,即用户使用字符串来定义要更改其值的字段,这是抽象框架的一部分,从技术上讲,我不知道他们想要改变的字段的名称.当然我可以使用哈希映射来做到这一点,但我正在考虑使用java反射,因为这允许字段保留为对象的字段而不是被编码为哈希映射的值.我已经将反射用于我自己的个人工作,但我想知道使用Java反射实际上是不好的做法,我应该坚持使用hashmap方法.

(对于解决所描述的设计问题的任何其他建议也表示赞赏)

谢谢

java reflection design-patterns design-principles

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

暂停timerTask

我撞到了另一堵墙.让我的键输入工作后,我已经绞尽脑汁几个小时,我想创建一个暂停功能,这样如果再次按下相同的键,则timertask停止运行(即游戏暂停)

JPanel component = (JPanel)frame.getContentPane();
    component.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "space");
    component.getActionMap().put("space", (new AbstractAction(){
        public void actionPerformed(ActionEvent e){

            Timer timer = new Timer();

            timer.scheduleAtFixedRate(new TimerTask(){
            public void run(){
                    grid.stepGame();
                }
            },250, 250);



        }}));


        }
Run Code Online (Sandbox Code Playgroud)

问题是我无法使用全局布尔值isRunning var并在每次按下键时切换它,因为嵌套类中的timerTask方法(因此boolean isRunning必须被声明为final才能被访问...).关于如何检测是否再次按下键或者游戏是否已经运行的任何想法,我可以暂停/取消我的timerTask.

非常感谢Sam

java swing timertask

2
推荐指数
1
解决办法
2595
查看次数

在JPanel中修复JEditorPane的大小

这与我上一个问题非常相似,但是在JPanel中这样做我试图在JPanel(固定大小)中显示一个JEditorPane,然后显示一个HTML文本字符串.(这是我可以使用卡布局和开关面板与不同的显示器).我可以再次显示所有内容,但似乎我传递到EditorPane的HTML字符串中的文本没有切断并换行到新行.即它只是伸出屏幕.似乎setSize方法与窗格的大小无关?

我正在为不同大小的屏幕制作这个应用程序,所以重要的是文本包装到新行并适合屏幕大小而不是跑掉!当EditorPane直接位于JFrame而不是JPanel时,它可以工作.

    JEditorPane pane = new JEditorPane();
    pane.setEditable(false);
    HTMLDocument htmlDoc = new HTMLDocument () ; 
    HTMLEditorKit editorKit = new HTMLEditorKit () ;
    pane.setEditorKit (editorKit) ; 
    pane.setSize(size);
    pane.setMinimumSize(size); 
    pane.setMaximumSize(size);
    pane.setOpaque(true);
    pane.setText("<b><font face=\"Arial\" size=\"50\" align=\"center\" > Unfortunately when I display this string it is too long and doesn't wrap to new line!</font></b>");
    bg.add(pane, BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)

非常感谢Sam

java swing jeditorpane layout-manager

2
推荐指数
1
解决办法
2251
查看次数

从IntentService构造函数打开数据库连接

当试图通过正常机制打开数据库连接时,nullpointerexecption会抛出一个点dbhelper.getWritableDatabase.

问题似乎源于IntentService我传递的背景.

    public AnalysisService() {
    super("AnalysisService");
    Log.d("ANALYSIS_SERVICE", "Service started");
    try{
    db = new DBAdapter(this)
    db.openDB();
    }catch(Exception e){
        Log.d("ANALYSIS_SERVICE", Arrays.toString(e.getStackTrace()));
        Log.e("ANALYSIS_SERVICE", e.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

db.open方法在这里执行:

public class DBAdapter implements Database {

protected Context context;
protected SQLiteDatabase db;
private DatabaseHelper dbHelper;

public DBAdapter(Context context) {
    this.context = context;
    Log.e("DB_ADAPTER", "CREATED");
}

/**
 * Opens a database connection.
 * @return
 * @throws SQLException
 */
@Override
public DBAdapter openDB() throws SQLException {
    dbHelper = new DatabaseHelper(context); …
Run Code Online (Sandbox Code Playgroud)

sqlite service android

2
推荐指数
1
解决办法
2460
查看次数

在 Kubernetes 上安装自定义连接器到 Kafka Connect

我正在运行 kafka kubenetes helm 部署,但是我不确定如何安装自定义插件。

在本地版本的 kafka 上运行自定义插件时,我将卷安装/myplugin到 Docker 映像,然后设置插件路径环境变量。

我不确定如何将此工作流程应用于 helm Charts/kubernetes 部署,主要是如何将插件安装到 Kafka Connect pod,以便可以在 default 中找到它plugin.path=/usr/share/java

apache-kafka kubernetes apache-kafka-connect

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