标签: wrapper

为什么Java Wrapper类没有no-arg构造函数?

在Wrapper类中不提供no-arg构造函数的基本原理是什么?我知道它们本身是为包装原始类型而构建的,所以正确的方法是为构造函数提供原始类型.但是考虑到原始类型没有arg构造函数,为什么它们没有?

此外,如果它们没有arg构造函数,则可以将它们实例化为T.class.newInstance().但是,由于newInstance()需要no-arg构造函数,因此这不适用于Wrapper Classes.

提前致谢.

编辑:感谢John Topley纠正我的术语.

java wrapper

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

使用Unity IoC容器解决C#中的包装类

我想将Unity解析IService用于两个不同的实现,以使用包装类,相当于:

 IService service = new DispatcherService(new RealService(), Application.Current.Dispatcher);
Run Code Online (Sandbox Code Playgroud)

两者兼顾DispatcherServiceRealService实现IService界面.

我有一个包含一些异步操作服务的库.此服务的简化形式如下所示:

public interface IService
{
    IAsyncResult StartSomeOperation();
    event EventHandler<EventArgs> SomeOperationCompleted;
}
Run Code Online (Sandbox Code Playgroud)

我有所有这些服务的实现.我希望这个库保持对WPF和IoC容器的依赖性,但是在IoC容器和可能的WPF正在使用的情况下,它可以最好地使用.

我有一个使用Unity IoC容器的WPF Ui.最常见的重复代码围绕已完成的处理程序 - 需要使用Dispatcher将它们编组回UI线程.所以我正在考虑一个包装器,像这样:

using System;
using System.Windows.Threading;

public class DispatcherService : IService
{
    private Dispatcher dispatcher;
    private IService wrappedService;

    public DispatcherService(IService wrappedService, Dispatcher dispatcher)
    {
        this.wrappedService = wrappedService;
        this.wrappedService.SomeOperationCompleted += this.OnWrappedOperationCompleted;
        this.dispatcher = dispatcher;
    }

    public IAsyncResult StartSomeOperation()
    {
        return this.wrappedService.StartSomeOperation();
    }

    public event EventHandler<EventArgs> SomeOperationCompleted;

    private void OnWrappedOperationCompleted(object …
Run Code Online (Sandbox Code Playgroud)

c# ioc-container unity-container wrapper

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

Java包装器类.铸件

使用包装类将原语转换为对象时是否有名称?我假设这也称为铸造正确吗?

java casting wrapper

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

围绕C++ lib文件构建C#包装器

我有几个lib文件,我想在我的项目中使用.如何围绕C++ lib文件构建C#Wrapper.

任何网络链接或您知道的任何教程,请发送给我.

提前致谢.

c# wrapper

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

Servlet响应包装器有编码问题

Servlet响应包装器正在Servlet过滤器中使用.这个想法是响应被操纵,并将"nonce"值注入表单中,作为防御CSRF攻击的一部分.

Web应用程序在任何地方都使用UTF-8.当Servlet过滤器不存在时,没有问题.添加过滤器时,会出现编码问题.(似乎响应回复到8859-1.)

代码的内容:

final class CsrfResponseWrapper extends AbstractResponseWrapper {
   ...
   byte[] modifyResponse(byte[] aInputResponse){
      ...
      String originalInput = new String(aInputResponse, encoding);
      String modifiedResult = addHiddenParamToPostedForms(originalInput);
      result = modifiedResult.getBytes(encoding);
      ...
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

据我了解,byte-land和String-land之间的转换应指定编码.正如你所看到的,这在两个地方就完成了.'encoding'变量的值是'UTF-8'; String本身的更改是标准字符串操作(使用正则表达式),并且从不指定编码(addHiddenParamToPostedForms).

关于编码我在哪里错误?

编辑:这是基类(对不起,它很长):

package hirondelle.web4j.security;

import javax.servlet.ServletOutputStream;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

/**
 Abstract Base Class for altering response content.
 (May be useful in future contexts as well. For now, keep package-private.)  
*/
abstract class AbstractResponseWrapper extends HttpServletResponseWrapper {

  AbstractResponseWrapper(ServletResponse aServletResponse) …
Run Code Online (Sandbox Code Playgroud)

java servlets character-encoding wrapper servlet-filters

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

使用Wrapper类会增加对象的大小吗?

简单的问题可能是..假设我有A类包含两个原始整数(int),而B类包含两个Wrapper类Integer.哪个对象的大小会更大?A还是B?

java oop wrapper

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

C语言中简单包装函数的用途

Zed文件中的'Learn C the Hard Way'的ex26db.c定义了两个函数:

static FILE *DB_open(const char *path, const char *mode) {
return fopen(path, mode);
}
static void DB_close(FILE *db) {
fclose(db);
}
Run Code Online (Sandbox Code Playgroud)

我很难理解将这些非常简单的调用包装到fopen和的目的/需要fclose.如果有的话,包装非常简单的函数的优点是什么,如上面给出的例子?

c wrapper

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

在java中将int文字赋值给Long

我认为没有明确的理由发生这种情况..

public  class wrappers
{
    public static void main(String []args)
    {
        short s1=32767; // (primitive) works fine without compile error
        short s2=32768;   fails as this is  beyond short's range


        Short s3=32767; //(wrapper) works fine without compile error
        Short s4=32768; fails as this is beyond short's range

        long l1 =34   // (wrapper)works fine (with_in_range)


        Long l2 =34    // fails, without 34L (with_in_range)

    }
Run Code Online (Sandbox Code Playgroud)

我知道当你int为包装类指定文字时,会valueOf()被调用;

虽然Short(Wrapper)这似乎工作,但Long(wrapper)在代码中的上述任务失败.

是否有任何规则来管理这些包装类的分配?

java primitive literals wrapper

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

简单的包装类与智能指针

出于教育目的,我今天早些时候实现了一个包装类,定义如下(这取自一本书):

#ifndef WRAPPER_H
#define WRAPPER_H

template<class T>
class Wrapper
{
public:
  Wrapper()
  { dataPtr = 0; }

  Wrapper(const T& inner)
  {
    dataPtr = inner.clone();
  }

  Wrapper(const Wrapper<T> &original)
  {
    if (original.dataPtr != 0)
      dataPtr = original.dataPtr->clone();
    else
      dataPtr = 0;
  }

  Wrapper &operator =(const Wrapper<T> &original)
  {
    if (this != &original)
    {
        if (dataPtr != 0)
          delete dataPtr;

        dataPtr = (original.dataPtr !=0) ? original.dataPtr->clone() : 0;
    }
    return *this;
  }

  ~Wrapper()
  {
    if (dataPtr != 0)
      delete dataPtr;
  }

  T …
Run Code Online (Sandbox Code Playgroud)

c++ wrapper shared-ptr

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

在Perl中,如何将变量的声明提取到包装脚本中?

背景

我有一个perl脚本,称为main.pl,在清晰的情况下,当前处于多个分支状态,如下所示:

分支1:

my %hash
my $variable = "a"
my $variable2 = "c"

sub codeIsOtherwiseTheSame()
....
Run Code Online (Sandbox Code Playgroud)

分支2:

my %hash2
my $variable = "b"

sub codeIsOtherwiseTheSame()
....
Run Code Online (Sandbox Code Playgroud)

分公司3

my %hash
my $variable2 = "d"

sub codeIsOtherwiseTheSame()
....
Run Code Online (Sandbox Code Playgroud)

现在,脚本的每个分支都具有相同的代码。唯一的区别是声明的变量的种类及其初始化值是什么。我要做的是将这些不同的变量提取到包装脚本中(对于每个变体),这样就不必更改主脚本了。我这样做是因为有几个用户将使用此脚本,但是根据他们的用例,它们之间只有很小的差异。因此,我希望每种用户都有自己的简化界面。同时,我希望主脚本在被调用后仍能意识到这些变量。以下是我想要的示例:

所需解决方案

包装脚本1:

 my %hash;
 my $variable = "a";
 my $variable2 = "c";
 system("main.pl");
Run Code Online (Sandbox Code Playgroud)

包装脚本2:

 my %hash2;
 my $variable = "b";
 system("main.pl");
Run Code Online (Sandbox Code Playgroud)

包装脚本3:

my %hash;
my $variable2 = "d";
system("main.pl");
Run Code Online (Sandbox Code Playgroud)

Main.pl

sub codeIsOtherwiseTheSame()
Run Code Online (Sandbox Code Playgroud)

如何提取包装器脚本以获得上面想要的组织和行为?

perl wrapper

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