问题列表 - 第28680页

使用注释验证构造函数参数或方法参数,并让它们自动抛出异常

我正在验证构造函数和方法参数,因为我想要软件,特别是它的模型部分,要快速失败.

因此,构造函数代码通常看起来像这样

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注释).

非常感谢您的帮助.

java annotations exception

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

Javassist annoations问题

我正在尝试使用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)

java annotations javassist

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

使用Android下载文件,并在ProgressDialog中显示进度

我正在尝试编写一个更新的简单应用程序.为此,我需要一个简单的功能,可以下载一个文件,并显示当前进度ProgressDialog.我知道怎么做ProgressDialog,但我不知道如何显示当前进度以及如何首先下载文件.

java android download android-asynctask

1017
推荐指数
11
解决办法
52万
查看次数

Magento:我如何回应用户名

我使用现代主题

我在标题上有一个实时聊天按钮,我想在我的模板中解析信息

这是实时聊天按钮:

<!-- http://www.LiveZilla.net Chat Button Link Code --><a href="[removed]void(window.open('http://xxxxxx.fr/livezilla.php?code=BOUTIQUE&amp;en=<!!CUSTOMER NAME!!>&amp;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()

echo magento username

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

将<br>替换为pre标签之间的新行

我想转换

<p>Code is following</p>
<pre>
&lt;html&gt;<br>&lt;/html&gt;
</pre>
Run Code Online (Sandbox Code Playgroud)

<p>Code is following</p>
<pre>
&lt;html&gt;
&lt;/html&gt;
</pre>
Run Code Online (Sandbox Code Playgroud)

我不知道如何在PHP中的pre标签之间编写正则表达式来替换它.

我试过这段代码用BR标签替换换行符,但只在PRE标签内

但这对我不起作用.

php regex

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

从对象数组数据java中删除重复项

我想知道如何删除对象中的重复项。

例如

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)

我想从对象数组中删除重复值。

感谢和前进

java arrays object

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

Android - 自定义复合组件中的视图不会膨胀(findByView返回null)

我用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)

android relativelayout

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

Java匿名类效率的含义

这两种做事方式之间的效率(例如执行时间,代码大小等)是否有任何差异?

下面是创建对象并且什么也不做的人为设想的示例,但我的实际场景可能是创建新的线程,监听器等.假设以下代码片段在循环中发生,以便它可能有所作为.

使用匿名对象:

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)

java performance anonymous-class execution-time

27
推荐指数
5
解决办法
1万
查看次数

如何将UTF-8转换为HTML实体中的文本?

我有一个从互联网下载页面的下载程序.每个页面的编码是不同的,有些是UTF-8,有些是Unicode.例如:&#97;显示'a'字符; 这个字符的页面.我们应该将此编码转换为普通文本.

UnicodeEncoding在c#中使用过这个课程,但是他们没有帮助我.

如何将此编码解码为真实字符?是否有一个类或方法来转换它?

谢谢 .

c# encoding utf-8 html-entities

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

如何在java中将BigInteger转换为String

我转换一个StringBigInteger如下:

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 string cryptography biginteger

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