我正在验证构造函数和方法参数,因为我想要软件,特别是它的模型部分,要快速失败.
因此,构造函数代码通常看起来像这样
public MyModelClass(String arg1, String arg2, OtherModelClass otherModelInstance) {
if(arg1 == null) {
throw new IllegalArgumentsException("arg1 must not be null");
}
// further validation of constraints...
// actual constructor code...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用注释驱动的方法做到这一点?就像是:
public MyModelClass(@NotNull(raise=IllegalArgumentException.class, message="arg1 must not be null") String arg1, @NotNull(raise=IllegalArgumentException.class) String arg2, OtherModelClass otherModelInstance) {
// actual constructor code...
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这将使实际代码更具可读性.
了解有注释以支持IDE验证(如现有的@NotNull注释).
非常感谢您的帮助.
我正在尝试使用javassist生成我的Entity类.一切顺利,直到我将GeneratedValue注释添加到Id字段.@Id注释工作正常,但是当我添加@GeneeratedValue时,我得到一个异常.这是我的代码:
ClassPool cp = ClassPool.getDefault();
CtClass ctClass = cp.makeClass("test.Snake");
ClassFile classFile = ctClass.getClassFile();
classFile.setVersionToJava5();
AnnotationsAttribute attribute = new AnnotationsAttribute(classFile.getConstPool(), AnnotationsAttribute.visibleTag);
Annotation idAnnotation = new Annotation(classFile.getConstPool(), ClassPool.getDefault().get("javax.persistence.Id"));
attribute.addAnnotation(idAnnotation);
Annotation gvAnnotation = new Annotation(classFile.getConstPool(), ClassPool.getDefault().get("javax.persistence.GeneratedValue"));
attribute.addAnnotation(gvAnnotation);
CtField idField = new CtField(ClassPool.getDefault().get("java.lang.Long"), "id", ctClass);
idField.getFieldInfo().addAttribute(attribute);
ctClass.addField(idField);
CtField nameField = new CtField(ClassPool.getDefault().get("java.lang.String"), "name", ctClass);
ctClass.addField(nameField);
AnnotationsAttribute attr = new AnnotationsAttribute(classFile.getConstPool(), AnnotationsAttribute.visibleTag);
Annotation annotation = new Annotation(classFile.getConstPool(), ClassPool.getDefault().get("javax.persistence.Entity"));
attr.addAnnotation(annotation);
classFile.addAttribute(attr);
snakeClass = ctClass.toClass();
newInstance = snakeClass.newInstance();
Run Code Online (Sandbox Code Playgroud)
这是我得到的例外:
java.lang.NullPointerException
at javassist.bytecode.ConstPool.getUtf8Info(ConstPool.java:565)
at javassist.bytecode.annotation.EnumMemberValue.getValue(EnumMemberValue.java:98)
at javassist.bytecode.annotation.EnumMemberValue.write(EnumMemberValue.java:116)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个更新的简单应用程序.为此,我需要一个简单的功能,可以下载一个文件,并显示当前进度的ProgressDialog.我知道怎么做ProgressDialog,但我不知道如何显示当前进度以及如何首先下载文件.
我使用现代主题
我在标题上有一个实时聊天按钮,我想在我的模板中解析信息
这是实时聊天按钮:
<!-- http://www.LiveZilla.net Chat Button Link Code --><a href="[removed]void(window.open('http://xxxxxx.fr/livezilla.php?code=BOUTIQUE&en=<!!CUSTOMER NAME!!>&ee=<!!!CUSTOMER EMAIL!!>.........
Run Code Online (Sandbox Code Playgroud)
我需要替换用户的姓名和电子邮件(如果已记录)
该按钮位于我主页的标题中
我如何回应这两个信息?
我试过了
<?php echo $this->htmlEscape($this->getCustomer()->getName()) ?>
Run Code Online (Sandbox Code Playgroud)
但没有奏效:
致命错误:在第36行的/home/xxx/public_html/app/design/frontend/default/modern/template/page/html/header.phtml中的非对象上调用成员函数getFirstname()
我想转换
<p>Code is following</p>
<pre>
<html><br></html>
</pre>
Run Code Online (Sandbox Code Playgroud)
至
<p>Code is following</p>
<pre>
<html>
</html>
</pre>
Run Code Online (Sandbox Code Playgroud)
我不知道如何在PHP中的pre标签之间编写正则表达式来替换它.
我试过这段代码用BR标签替换换行符,但只在PRE标签内
但这对我不起作用.
我想知道如何删除对象中的重复项。
例如
cat c[] = new cat[10];
c[1].data = "ji";
c[2].data = "pi";
c[3].data = "ji";
c[4].data = "lp";
c[5].data = "ji";
c[6].data = "pi";
c[7].data = "jis";
c[8].data = "lp";
c[9].data = "js";
c[10].data = "psi";
Run Code Online (Sandbox Code Playgroud)
我想从对象数组中删除重复值。
感谢和前进
我用XML制作了一个自定义组件,它包含一个按钮,其上面叠有一个imageview:
<myapp.widget.ClearableCaptionedButton
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/ccbutton_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|left"
android:textAppearance="?android:attr/textAppearanceMedium"
android:background="@android:drawable/edit_text"/>
<ImageView
android:id="@+id/ccbutton_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dip"
android:layout_alignRight="@id/ccbutton_button"
android:layout_alignTop="@id/ccbutton_button"
android:layout_alignBottom="@id/ccbutton_button"/>
</myapp.widget.ClearableCaptionedButton>
Run Code Online (Sandbox Code Playgroud)
java源代码摘录:
public class ClearableCaptionedButton extends RelativeLayout implements OnClickListener {
...
public ClearableCaptionedButton(Context context, AttributeSet attrs) {
super(context, attrs);
// some stuff that works fine
}
..
protected void onFinishInflate() {
super.onFinishInflate();
mButton = (Button) findViewById(R.id.ccbutton_button);
mClear = (ImageView) findViewById(R.id.ccbutton_clear);
mButton.setText(""); // error here: mButton == null
}
Run Code Online (Sandbox Code Playgroud)
我的问题与此类似.当我尝试在自定义化合物中查找视图时,findViewById返回null.但是,正如你所看到的,我已经添加了super(context,attrs); 到构造函数.我在xml布局中直接使用自定义组件,如下所示:
<LinearLayout>
<!-- some stuff -->
<myapp.widget.ClearableCaptionedButton
android:layout_width="fill_parent"
android:layout_height="wrap_content" …Run Code Online (Sandbox Code Playgroud) 这两种做事方式之间的效率(例如执行时间,代码大小等)是否有任何差异?
下面是创建对象并且什么也不做的人为设想的示例,但我的实际场景可能是创建新的线程,监听器等.假设以下代码片段在循环中发生,以便它可能有所作为.
使用匿名对象:
void doSomething() {
for (/* Assume some loop */) {
final Object obj1, obj2; // some free variables
IWorker anonymousWorker = new IWorker() {
doWork() {
// do things that refer to obj1 and obj2
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
首先定义一个类:
void doSomething() {
for (/* Assume some loop */) {
Object obj1, obj2;
IWorker worker = new Worker(obj1, obj2);
}
}
static class Worker implements IWorker {
private Object obj1, obj2;
public CustomObject(Object obj1, Object obj2) {/* …Run Code Online (Sandbox Code Playgroud) 我有一个从互联网下载页面的下载程序.每个页面的编码是不同的,有些是UTF-8,有些是Unicode.例如:a显示'a'字符; 这个字符的页面.我们应该将此编码转换为普通文本.
我UnicodeEncoding在c#中使用过这个课程,但是他们没有帮助我.
如何将此编码解码为真实字符?是否有一个类或方法来转换它?
谢谢 .
我转换一个String到BigInteger如下:
Scanner sc=new Scanner(System.in);
System.out.println("enter the message");
String msg=sc.next();
byte[] bytemsg=msg.getBytes();
BigInteger m=new BigInteger(bytemsg);
Run Code Online (Sandbox Code Playgroud)
现在我想要我的字符串.我正在使用,m.toString()但这给了我想要的结果.
为什么?错误在哪里,我该怎么办呢?
java ×6
android ×2
annotations ×2
arrays ×1
biginteger ×1
c# ×1
cryptography ×1
download ×1
echo ×1
encoding ×1
exception ×1
javassist ×1
magento ×1
object ×1
performance ×1
php ×1
regex ×1
string ×1
username ×1
utf-8 ×1