小编msr*_*rd0的帖子

如何为Java代码的某些部分关闭Eclipse代码格式化程序?

我有一些Java代码,其中SQL语句编写为Java字符串(请不要使用OR/M flamewars,嵌入式SQL就是这样 - 不是我的决定).

为了便于维护,我在几行代码中将SQL语句在语义上分解为几个连接的字符串.所以,而不是像:

String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
Run Code Online (Sandbox Code Playgroud)

我有类似的东西:

String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
Run Code Online (Sandbox Code Playgroud)

这种风格使SQL更易于阅读和维护(恕我直言),特别是对于较大的查询.例如,我可以将我的编辑器置于"覆盖"模式,并相当容易地就地修改文本.

请注意,此问题超出了SQL的特定示例.任何使用任何垂直格式编写的代码,特别是表格结构,都容易被漂亮的打印机破坏.

现在,一些项目成员使用Eclipse编辑器,语义格式在格式化整个源文件时经常被破坏.

有没有办法指示Eclipse在格式化方面忽略某些源代码行?

我正在寻找像切换Eclipse格式化程序的特殊注释.理想情况下,这样的评论可以配置为我们选择的任何内容,其他格式化程序也可以编程为尊重它:

// STOP-ECLIPSE-FORMATTING
String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
// START-ECLIPSE-FORMATTING
Run Code Online (Sandbox Code Playgroud)

显然,一个"解决方案"是让我们的团队成员对JalopyJIndent这样的外部格式化程序进行标准化,但这不是这个问题的原因(也不是我对这个项目的决定):我正在寻找一种方法在临时的基础上避免使用Eclipse格式化程序.

理想情况下,解决方案将允许我插入Eclipse格式化程序的指令,而无需团队成员使用Eclipse进行任何IDE重新配置(除了可能选择格式化程序无关的命令注释:STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING).

java eclipse code-formatting pretty-print eclipse-formatter

474
推荐指数
8
解决办法
15万
查看次数

宽度为100%的HTML表格,在tbody中有垂直滚动

如何设置<table>100%宽度并仅在<tbody>垂直滚动内放置一些高度?

tbody里面的垂直滚动

table {
    width: 100%;
    display:block;
}
thead {
    display: inline-block;
    width: 100%;
    height: 20px;
}
tbody {
    height: 200px;
    display: inline-block;
    width: 100%;
    overflow: auto;
}
  
Run Code Online (Sandbox Code Playgroud)
<table>
  <thead>
    <tr>
    	<th>Head 1</th>
    	<th>Head 2</th>
    	<th>Head 3</th>
    	<th>Head 4</th>
    	<th>Head 5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
    	<td>Content 1</td>
    	<td>Content 2</td>
    	<td>Content 3</td>
    	<td>Content 4</td>
    	<td>Content 5</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

我希望避免增加一些额外的div,我要的是简单的表像这样,当我试图改变显示table-layout,position在CSS表以及更多的东西没有工作好与100%的宽度仅与PX固定宽度.

html css css3 vertical-scrolling

387
推荐指数
7
解决办法
72万
查看次数

如何使System.out.println()更短

请告诉我在哪里可以找到lib,以便使用较短的表达式System.out.println()以及我应该将lib放在何处.

java

121
推荐指数
6
解决办法
17万
查看次数

Kotlin中有效的Enums反向查找?

我正试图找到在Kotlin上对枚举进行"反向查找"的最佳方法.我对Effective Java的一个看法是,你在枚举中引入了一个静态映射来处理反向查找.使用简单的枚举将其移植到Kotlin会导致我看到如下代码:

enum class Type(val value: Int) {
    A(1),
    B(2),
    C(3);

    companion object {
        val map: MutableMap<Int, Type> = HashMap()

        init {
            for (i in Type.values()) {
                map[i.value] = i
            } 
        }

        fun fromInt(type: Int?): Type? {
            return map[type]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是最好的方法吗,还是有更好的方法?如果我有几个遵循类似模式的枚举怎么办?在Kotlin中是否有一种方法可以使这些代码在枚举中更易于使用?

enums kotlin

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

将File.listFiles与FileNameExtensionFilter一起使用

我想获得一个目录中具有特定扩展名的文件列表.在API(Java 6)中,我看到了一个File.listFiles(FileFilter)可以执行此操作的方法.

由于我需要特定的扩展,我创建了一个FileNameExtensionFilter.但是当我使用listFiles它时出现编译错误.我认为,因为FileNameExtensionFilter implements FileFilter,我应该能够做到这一点.代码如下:

FileNameExtensionFilter filter = new FileNameExtensionFilter("text only","txt");
String dir  = "/users/blah/dirname";
File f[] = (new File(dir)).listFiles(filter);
Run Code Online (Sandbox Code Playgroud)

最后一行显示编译错误:

类型File中的方法listFiles(FileNameFilter)不适用于FileNameExtensionFilter类型的参数

我试图使用listFiles(FileFilter),而不是listFiles(FileNameFilter).为什么编译器不能识别这个?

如果我编写自己的扩展过滤器扩展,这是有效的FileFilter.我宁愿使用而FileNameExtensionFilter不是写我自己的.我究竟做错了什么?

java file filter java-6

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

Java中的默认构造函数和继承

我有一个关于Java中的默认构造函数和继承的问题.

通常,如果你编写一个类并且不包含任何构造函数,Java会自动为你提供一个默认构造函数(一个没有参数),它初始化类的所有实例变量(如果有的话)都有一些默认值(0,null或者是假的.但是,如果使用某些参数编写构造函数,并且不编写任何默认构造函数,则Java不提供默认构造函数.我的问题是:类继承自其他类的情况是什么 - 如果我编写一个带有一些参数的构造函数,但是不包含默认构造函数,它们是否继承了超类的默认构造函数?

java inheritance initialization default-constructor

51
推荐指数
5
解决办法
9万
查看次数

如何使用JNI创建对象?

我需要使用NDK和JNI将一些函数实现到Android应用程序中.

以下是我编写的C代码,我的问题是:

#include <jni.h>
#include <stdio.h>

jobject
Java_com_example_ndktest_NDKTest_ImageRef(JNIEnv* env, jobject obj, jint width, jint height, jbyteArray myArray)
{
    jint i;
    jobject object;
    jmethodID constructor;
    jobject cls;
    cls = (*env)->FindClass(env, "com/example/ndktest/NDKTest/Point");

//what should put as the second parameter? Is my try correct, according to what
//you can find in .java file? I used this documentation: http://download.oracle.com/javase/6/docs/technotes/guides/jni/spec/functions.html#wp16027

    constructor = (*env)->GetMethodID(env, cls, "<init>", "void(V)");
//http://download.oracle.com/javase/6/docs/technotes/guides/jni/spec/functions.html#wp16660
//Again, is the last parameter ok?

    object = (*env)->NewObject(env, cls, constructor, 5, 6);
//I want to assign "5" …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface android android-ndk

51
推荐指数
4
解决办法
7万
查看次数

通过Id(int)更轻松地获取视图的Id(字符串)

我是android和java的新手,很抱歉,如果这是一个太基本的问题,但我试图在论坛和谷歌找到一个解决方案,我不能.

我的布局中有24个按钮,所有这些按钮都做类似的事情,所以我想创建一个通用的功能.但首先我需要知道他按钮的名称(xml id).

这个按钮的XML代码:

  <Button
      android:id="@+id/add_04"
      android:layout_width="42dp"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:layout_marginLeft="15dp"
      android:background="@xml/zbuttonshape"
      android:onClick="onClick"
      android:text="@string/mas" />
Run Code Online (Sandbox Code Playgroud)

我为所有按钮设置了android:onClick ="onClick".

在我的活动中,我在onClick上创建了一个新函数:

这是我试过的代码:

public void onClick(View v) {
        String name = v.getContext().getString(v.getId());
        String name2 = context.getString(v.getId());
        String name3 = getString(v.getId());
        String name4 = getResources().getString(v.getId()); 
}
Run Code Online (Sandbox Code Playgroud)

但是当我试图获得名称(在这种情况下是"add_04")时,我总是得到"假".

最后,我找到了一个包含以下代码的解决方案:

import java.lang.reflect.Field;

String name5 = null;
Field[] campos = R.id.class.getFields();
for(Field f:campos){
     try{
        if(v.getId()==f.getInt(null)){
            name5 = f.getName();
            break;
        }
       }
       catch(Exception e){
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有更简单的方法来获取此ID?

提前致谢.

android

51
推荐指数
6
解决办法
8万
查看次数

我何时以及为什么需要在C++中使用cin.ignore()?

我用C++编写了一个非常基本的程序,它要求用户输入一个数字,然后输入一个字符串.令我惊讶的是,在运行程序时,它永远不会停止询问字符串.它只是跳过了它.在对StackOverflow进行一些阅读后,我发现我需要添加一行说:

cin.ignore(256, '\n');
Run Code Online (Sandbox Code Playgroud)

在获取字符串输入的行之前.添加修复问题并使程序正常工作.我的问题是为什么C++需要这一cin.ignore()行,我如何预测何时需要使用cin.ignore()

这是我写的程序:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    double num;
    string mystr;

    cout << "Please enter a number: " << "\n";
    cin >> num;
    cout << "Your number is: " << num << "\n";
    cin.ignore(256, '\n'); // Why do I need this line?
    cout << "Please enter your name: \n";
    getline (cin, mystr);
    cout << "So your name is " << mystr << "?\n";
    cout << "Have a nice …
Run Code Online (Sandbox Code Playgroud)

c++ ignore cin getline

51
推荐指数
4
解决办法
18万
查看次数

最好的Eclipse代码格式化程序?

默认的Eclipse格式化程序以非常有趣的方式格式化我的Java代码.

例如:hello.show().x().y()奇怪地将其格式化为x().y(),并放在一个单独的行上.

还有其他基本格式化程序可以做得更好吗?

非常欢迎示例和链接.

java eclipse formatting eclipse-formatter

42
推荐指数
4
解决办法
8万
查看次数