小编And*_*ndy的帖子

MS Outlook宏将删除所选文本

任务是将删除线应用于所选文本区域中的当前字体.难点在于Outlook不支持动态记录宏 - 它希望手动编写代码.

例如,以下简单代码:

Selection.Font.Strikethrough = True
Run Code Online (Sandbox Code Playgroud)

适用于Word,但为Outlook提供错误:

Run-time error '424':
Object required
Run Code Online (Sandbox Code Playgroud)

outlook vba text-formatting outlook-vba

10
推荐指数
2
解决办法
6460
查看次数

如何保留包含特定成员的类?

我想只保留包含带注释方法的类@Keep,以及这些方法.即使它们未使用,也应保留这些方法(和拥有类).

我在.pro文件中写的是:

-keepclassmembers class * {
    @Keep *;
}

-keepclasseswithmembers class * {
    @Keep *;
}
Run Code Online (Sandbox Code Playgroud)

但如果它们未被使用,它会使用@Keep方法缩小类.

然后我试试这个:

-keep class * {
    @Keep *;
}
Run Code Online (Sandbox Code Playgroud)

它只保留所有课程.

那么,我应该在.pro文件中写什么?

更新1:示例 感谢您的回答.但我已经使用了完全限定的注释名称并包含带注释的JAR,但它并没有按照我的意愿行事.所以,我准备了一个样本.

我有2个JAR:

example.jar /

  example/
    code/
      more/
        A.class
Run Code Online (Sandbox Code Playgroud)

lib.jar /

  example/
    lib/
      Keep.class
Run Code Online (Sandbox Code Playgroud)

A.java:

package example.code.more;

import example.lib.*;

public class A {
  @Keep
  void foo() {}
}
Run Code Online (Sandbox Code Playgroud)

Keep.java:

package example.lib;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.CLASS)
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
public @interface Keep {

}
Run Code Online (Sandbox Code Playgroud)

Proguard配置, …

java obfuscation proguard

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

Spring WEB安全性:可访问URL列表

我正在将一个WEB应用程序迁移到Spring Security.应用程序使用Spring MVC来呈现JSP,并使用注释控制器方法@Secured(...).

因此,在成功登录和MVC servlet初始化之后的某个时刻,一些Spring内部有这些信息:用户具有哪些权限(也称为授权权限),控制器URL和权限集,每个权限都需要.

我想要的是动态获取当前用户可访问的URL列表以生成导航栏.

当然,我可以为此覆盖一些Spring bean,但这种方法看起来太脏了.那么,关于如何做到这一点的任何建议,也许是标准解决方案?

java spring spring-mvc spring-security

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

应该在UI线程中调用findviewbyid吗?

问题是:我应该Activity.findViewById只在UI线程中调用吗?

我问的原因是我从任意线程调用它并且它完美无缺.但后来我从其中一个用户那里得到了一个例外:findViewByIdNPE某个地方失败了findViewTraversal.

那么,它可能是原因吗?

java android

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

Eclipse:与警告相矛盾

这是代码片段:

class MyClass {
    private native void foo();
}
Run Code Online (Sandbox Code Playgroud)

对于上述情况,Eclipse(即3.7.0)发出警告

来自MyClass类型的方法foo()从不在本地使用

好吧,但是当我试图压制警告时:

class MyClass {
    @SuppressWarnings("unused")
    private native void foo();
}
Run Code Online (Sandbox Code Playgroud)

它抱怨

不受欢迎的@SuppressWarnings("未使用")

那么,有没有办法让它停止抱怨?

更新

很抱歉信息不完整 - 此警告仅显示在AspectJ项目中.一旦我创建了一个简单的Java项目并将我的类放入其中,一切正常.

据我所知,AspectJ使用自己的编译器,因此必须由它生成此警告.我正在使用AspectJ Development Tools插件:

Version: 2.1.3.e37x-20110628-1900
AspectJ version: 1.6.12.20110613132200
Run Code Online (Sandbox Code Playgroud)

java eclipse aspectj suppress-warnings

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

在哪里放非公开课?

比方说,我有一个Java类一个,这需要一个辅助类.该助手类仅用于A,没有其他用途.此外,B不需要以任何方式使用A(不要调用方法或访问字段).

所以,问题是:在哪里放B

有以下选项:

  1. 静态嵌套类.在我看来,它只是使代码不那么清晰(更多的缩进等).

    public class A {
        ...
        private static class B { ... }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 同一来源的非公开课.我喜欢这个选项.

    public class A {
        ...            
    }
    
    class B { 
        ... 
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 非公开类在单独的来源中.看起来这个选项有一点开销.

    // A.java
    public class A {
        ...            
    }
    
    // B.java
    class B { 
        ... 
    }
    
    Run Code Online (Sandbox Code Playgroud)

现在,我更喜欢第二种选择.你对此有什么想法?什么是最佳做法?它有权威来源吗?

java coding-style

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

如何从系统时间独立获得时间增量?

我正在用Java编写一个简单的计时器.它有"开始"和"停止"按钮,以及显示自计时器启动以来经过了多长时间的文本视图.

它是通过System.currentTimeMillis()在循环中每秒设置初始时间和更新当前值来实现的.

问题是如果我在计时器运行时更​​改系统时间,整个测量将失败.例如,如果我将时间设置为一个月,则计时器显示负值,因为currentTimeMillis()现在返回的值小于初始值.

那么,我如何计算与系统时间无关的时间增量?使这个解决方案跨平台也很棒.

java time

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

GDB:如何查看可访问的内存地址?

假设,在调试会话中,我有一个地址,不幸的是它指向一些垃圾.我想检查周围的记忆,看看附近有什么.正如所料,发生以下错误:

(gdb) x/64 $t5
0x842da7ac:     Cannot access memory at address 0x842da7ac
Run Code Online (Sandbox Code Playgroud)

所以,问题是:有没有办法读取一系列地址,其中一些无效?

(更准确地说,我怎么知道上面的例子$t5+n中某些人的有效地址0 < n <= 64?)

memory debugging assembly gdb postmortem-debugging

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

在AspectJ中获取泛型方法调用的返回类型

我有通用的方法Foo.foo():

class Foo {
    static native T <T> foo();
}

Bar bar = Foo.foo();
Run Code Online (Sandbox Code Playgroud)

我需要的是使用AspectJ替换对此方法的调用.问题是要从方面返回类型T的值,我需要知道T是什么.我如何使用AspectJ做到这一点?

这是我尝试过的一个解决方案:

Object around() : call(* Foo.foo(..)) {
    Class target = ((MethodSignature) thisJoinPoint.getSignature()).getReturnType();
    System.out.println("class = " + class);
}
Run Code Online (Sandbox Code Playgroud)

Object作为返回类型返回.如何确定该调用foo()应该实际返回实例Bar

java aspectj

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