我有一些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)
显然,一个"解决方案"是让我们的团队成员对Jalopy或JIndent这样的外部格式化程序进行标准化,但这不是这个问题的原因(也不是我对这个项目的决定):我正在寻找一种方法在临时的基础上避免使用Eclipse格式化程序.
理想情况下,解决方案将允许我插入Eclipse格式化程序的指令,而无需团队成员使用Eclipse进行任何IDE重新配置(除了可能选择格式化程序无关的命令注释:STOP-ECLIPSE-FORMATTING→ STOP-FORMATTING).
如何设置<table>100%宽度并仅在<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固定宽度.
请告诉我在哪里可以找到lib,以便使用较短的表达式System.out.println()以及我应该将lib放在何处.
我正试图找到在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中是否有一种方法可以使这些代码在枚举中更易于使用?
我想获得一个目录中具有特定扩展名的文件列表.在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中的默认构造函数和继承的问题.
通常,如果你编写一个类并且不包含任何构造函数,Java会自动为你提供一个默认构造函数(一个没有参数),它初始化类的所有实例变量(如果有的话)都有一些默认值(0,null或者是假的.但是,如果使用某些参数编写构造函数,并且不编写任何默认构造函数,则Java不提供默认构造函数.我的问题是:类继承自其他类的情况是什么 - 如果我编写一个带有一些参数的构造函数,但是不包含默认构造函数,它们是否继承了超类的默认构造函数?
我需要使用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) 我是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?
提前致谢.
我用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) 默认的Eclipse格式化程序以非常有趣的方式格式化我的Java代码.
例如:hello.show().x().y()奇怪地将其格式化为x()和.y(),并放在一个单独的行上.
还有其他基本格式化程序可以做得更好吗?
非常欢迎示例和链接.
java ×6
android ×2
eclipse ×2
android-ndk ×1
c++ ×1
cin ×1
css ×1
css3 ×1
enums ×1
file ×1
filter ×1
formatting ×1
getline ×1
html ×1
ignore ×1
inheritance ×1
java-6 ×1
kotlin ×1
pretty-print ×1